我有一个工作的应用程序,它是一个基于tabbarcontroller的应用程序.第一个viewcontroller是一个uitableviewcontroller.所有3个选项卡顶部都有一个导航栏,我从对象库中添加了导航栏.这就是应用程序的样子:
然后我想将导航栏上的图像设置为居中徽标.所以我环顾四周,发现代码看起来像这样:
UIImage *image = [UIImage imageNamed:@"icon57.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage: image]; self.navigationItem.titleView = imageView;
要么
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"icon57.png"] forBarMetrics:UIBarMetricsDefault];
但它没有用.我刚买了一个空的白色导航栏.所以我决定通过从对象库中拖入它来将UIImageView添加到导航栏但是由于某种原因它导致导航栏消失,我最终得到了这个:
为什么会这样?
解决方法
Interface Builder不支持您的方式.我鼓励你
file a radar支持这样做.您可以通过两种不同的方式实现此目的,一种是代码,另一种是IB.
通过Interface Builder
您可以从对象库中拖动UIView实例并将其放入导航栏的中心.这将在栏的标题区域内设置视图.然后,您可以获取UIImageView实例并将其添加为刚刚添加的视图的子视图.
通过代码
您可以使用视图控制器导航项的titleView属性通过代码设置UIImageView:
- (void)viewDidLoad { [super viewDidLoad]; UIImage *logo = [UIImage imageNamed:@"logo.png"]; self.navigationItem.titleView = [[UIImageView alloc] initWithImage:logo]; }
编辑:
要将其设置在左侧,您必须将图像视图包装在UIBarButtonItem中.您可以使用上述相同的步骤在IB中执行此操作,或者在以下代码中执行此操作:
- (void)viewDidLoad { [super viewDidLoad]; UIImage *logo = [UIImage imageNamed:@"logo.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage:logo]; UIBarButtonItem *imageButton = [[UIBarButtonItem alloc] initWithCustomView:imageView]; self.navigationItem.leftBarButtonItem = imageButton; }