如何将 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 添加到导航栏的右侧?的主要内容,如果未能解决你的问题,请参考以下文章

添加覆盖导航栏的 UIImageView

Bootstrap 4 - 使用切换按钮将链接移动到导航栏的右侧[重复]

如何在导航栏中添加自定义视图?

以编程方式将按钮添加到导航栏

html 在导航栏或操作栏的左侧或右侧添加按钮

iPhone:在代码中的导航栏中将“添加信息”按钮添加为右侧栏按钮项