【问题标题】:Add a colourful image as the right bar button item in a navigation bar在导航栏中添加彩色图像作为右栏按钮项
【发布时间】:2016-07-09 15:05:46
【问题描述】:

我添加了一个带有彩色背景图像的右侧导航栏项:

let rightButton = UIBarButtonItem(image: UIImage(named: "avatar")!,
                                  style: UIBarButtonItemStyle.Plain, 
                                  target: self,     
                                  action: #selector(self.rightNavBarItemAction))

navigationItem.rightBarButtonItem = rightButton

我没有将图像作为按钮的背景(颜色),而是使用白色占位符。

【问题讨论】:

    标签: ios swift uinavigationcontroller uinavigationitem


    【解决方案1】:

    您可以将图像的渲染模式更新为 UIImageRenderingMode.alwaysOriginal.

    Swift 4.2:

    let img = UIImage(named: "avatar")!.withRenderingMode(.alwaysOriginal)
    let rightButton = UIBarButtonItem(image: img,
                                          style: UIBarButtonItem.Style.Plain,
                                          target: self,
                                          action: #selector(self.rightNavBarItemAction))
    

    斯威夫特 4:

    let img = UIImage(named: "avatar")!.withRenderingMode(.alwaysOriginal)
    let rightButton = UIBarButtonItem(image: img,
                                          style: UIBarButtonItemStyle.Plain,
                                          target: self,
                                          action: #selector(self.rightNavBarItemAction))
    

    斯威夫特 3:

    let img = UIImage(named: "avatar")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
    let rightButton = UIBarButtonItem(image: img,
                                          style: UIBarButtonItemStyle.Plain,
                                          target: self,
                                          action: #selector(self.rightNavBarItemAction))
    

    或者,您可以按照弗拉基米尔的回答设置自定义视图。

    【讨论】:

    • 对于 Swift 4.2 UIBarButtonItem.Style.plain
    【解决方案2】:

    要实现这一点,您需要一个按钮 UIButton,设置该按钮的图像,然后将其分配为自定义视图,如果您的 UIBarButtonItem

    let button = UIButton()
    button.frame = CGRectMake(0, 0, 51, 31)
    button.setImage(UIImage(named: "avatar"), forState: .Normal)
    button.addTarget(self, action: #selector(self.rightNavBarItemAction)), forControlEvents: .TouchUpInside)
    
    let barButton = UIBarButtonItem()
    barButton.customView = button
    self.navigationItem.rightBarButtonItem = barButton
    

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多