ios – 为什么将storyview添加到故事板中的导航栏会删除导航栏?

前端之家收集整理的这篇文章主要介绍了ios – 为什么将storyview添加到故事板中的导航栏会删除导航栏?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个工作的应用程序,它是一个基于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;
}

猜你在找的iOS相关文章