gpt4 book ai didi

ios - 为什么将 imageview 添加到 Storyboard中的导航栏会删除导航栏?

转载 作者:可可西里 更新时间:2023-11-01 03:05:25 24 4
gpt4 key购买 nike

我有一个工作应用程序,它是一个基于 tabbarcontroller 的应用程序。第一个 View Controller 是一个 uitableviewcontroller。所有 3 个选项卡的顶部都有一个导航栏,这是我从对象库中添加的。这是应用程序的样子:

Original UITableViewController in first tab with UINavbar

然后我想将导航栏上的图像设置为居中的 Logo 。所以我环顾四周,发现代码如下所示:

 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 从对象库中拖入来将它添加到导航栏,但由于某种原因它使导航栏消失,我最终得到了这个:

After adding UIImageView to UINavBar

为什么会这样?

最佳答案

Interface Builder 不支持您的操作方式。我会鼓励你 file a radar支持这样做。您可以通过两种不同的方式完成此操作,一种通过代码,另一种通过 IB。

通过 Interface Builder

您可以从对象库中拖动一个 UIView 实例并将其放到导航栏的中央。这将在栏的标题区域内设置 View 。然后您可以获取一个 UIImageView 实例并将其添加为您刚添加的 View 的 subview 。

通过代码

您可以使用 View Controller 导航项的 titleView 属性通过代码设置 UIImageView:

- (void)viewDidLoad {
[super viewDidLoad];

UIImage *logo = [UIImage imageNamed:@"logo.png"];
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:logo];
}

编辑:

为了将它设置在左侧,您必须将 ImageView 包装在 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 - 为什么将 imageview 添加到 Storyboard中的导航栏会删除导航栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18109325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com