如何将 UIImageView 添加到导航栏的右侧?
Posted
技术标签:
【中文标题】如何将 UIImageView 添加到导航栏的右侧?【英文标题】:How can I add an UIImageView to the right side of a navigation bar? 【发布时间】:2015-11-02 08:38:23 【问题描述】:我尝试在导航栏的最右侧显示UIImageView
。
我尝试将 UIViewcontrol 添加到导航栏,将其调整到尽可能大的大小,然后添加UIImageView
,其尾部空格为 0。
在情节提要中看起来不错,但是当我在 iPhone 上运行该应用程序时,图像和右侧之间有很大的空间。
有什么办法可以去掉这个空间?
编辑: 如您所见,iPhone 右侧有一个不在情节提要中的巨大空间。由于我尝试仅使用情节提要来做到这一点,因此没有可以显示的代码。
【问题讨论】:
你有截图或示例代码吗? 我添加了一些截图:) 【参考方案1】:使用 initWithImage:style:target:action: 或 initWithCustomView: 方法创建一个 UIImageBarButton,并将其作为右栏按钮项添加到导航项中:
- (void)viewDidLoad
[super viewDidLoad];
UIBarButtonItem *myBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageName"] style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.rightBarButtonItem = myBarButtonItem;
【讨论】:
感谢您的回答 :) 但是当我使用UIBarButtonItem
时,它会将图像染成蓝色。有没有办法让图像保持原来的颜色?我可以像截图中的图片一样绕过UIBarButtonItem
的角落吗?
我明白了。比你应该使用 initWithCustomView 方法。创建 UIImageView,分配图像,圆角,从该图像视图创建 UIImageBarButton 并分配给 rightBarButtonItem。【参考方案2】:
创建一个自定义视图并将其分配给 navigationItem.titleView
- (void)viewDidLoad
[super viewDidLoad];
UIView *temp = [[UIView alloc] initWithFrame:...];
UIImage *image = [[UIImage alloc] initWithFrame:...];
[temp addSubview:image];
self.navigationItem.titleView = temp;
【讨论】:
通过将视图分配给navigationItem.title,您可以同时拥有标题标签和uiimage 非常感谢您的回答,但我像 kirander 建议的那样解决了它:)【参考方案3】:将下面的代码用于带有图像的右键:
UIButton *btn = [UIButton alloc] initWithFrame:...];
[btn setImage:[UIImage imageNamed:@"..."] forState:UIControlStateNormal];
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.rightBarButtonItem = rightButton;
【讨论】:
以上是关于如何将 UIImageView 添加到导航栏的右侧?的主要内容,如果未能解决你的问题,请参考以下文章