禁用时设置UIBarButtonItem灰色

时间:2017-05-26 18:29:33

标签: uibarbuttonitem

我有一个UIColor的扩展来从十六进制字符串中获取颜色。我按照以下方式使用它:

    self.navigationItem.rightBarButtonItem?.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor(hexString: "#C0BFC0")], for: UIControlState.disabled)
    self.navigationItem.rightBarButtonItem?.isEnabled = false

由于某种奇怪的原因,rightBarButtonItem的颜色与以前相同。有没有办法在禁用时更改它?我在viewDidLoad函数中有上面的内容

我试过阅读以下内容:

UIBarButtonItem is disabled, but has normal color

Change color of disabled bar button item in iOS

我可以在未禁用时更改颜色。似乎什么时候禁用它的颜色不被遵守?

1 个答案:

答案 0 :(得分:1)

  

当它被禁用时,颜色不被遵守?

我用一些工具栏项目来点击这个bug。我的解决方法是确保在禁用的颜色应该更改时,UIBarButtonItem标题在运行时更改。要执行此操作,请更改禁用的颜色,然后根据需要通过添加不可见的Unicode空间强制更改标题。

例如在Swift中:

let zeroWidthSpaceStr = "\u{200B}"

func forceChangeItemTitle(_ item:UIBarButtonItem, newTitle:String) {
    // Ensure the button item title is changed. Needed to pick up change in disabled text color
    var newTitle = newTitle
    if item.title == newTitle {
        // Title already set, so change it invisibly
        newTitle += zeroWidthSpaceStr
    }
    item.title = newTitle
}