在导航栏中将tintColor更改为默认值(蓝色)

时间:2016-02-14 18:59:41

标签: ios uinavigationcontroller tintcolor

我可以在设置窗格中更改我的应用程序的tintColor(无处不在)。 当我更改tintColor,然后尝试返回默认的色调颜色时,NavBar中的某些按钮不会返回蓝色,我该如何处理?

验证: - 创建一个新项目Master / Detail - 在详细视图中:添加两个按钮,名为:“Red Interface”和“Blue interface” - 在DetailViewController中,添加操作

@IBAction func tapRed(sender: AnyObject) {
    view.window!.tintColor = UIColor.redColor()
}


@IBAction func tapBlue(sender: AnyObject) {
    view.window!.tintColor = nil
}

现在运行应用程序,创建时间戳,转到详细信息,点击redInterface,然后点击蓝色界面 在详细信息视图中可以,但是当您返回到Master时,“+”按钮项为红色,而不是蓝色。

我可以通过设置真正的蓝色而不是nil来解决问题,但如果Apple更改默认的tintColor,那么这不是长期解决方案。

这是一个错误吗?我能做些什么来绕过这个问题吗?

2 个答案:

答案 0 :(得分:1)

快速解决方法是在初始应用加载时获取默认色调颜色一次并将其存储在某处(即在用户默认值中)

来自Apple的iOS 7 UI Transition Guide(特别是在使用色调颜色部分下)。

  

默认情况下,视图的色调颜色为nil,这意味着视图使用其父色调。这也意味着当您向视图询问其色调颜色时,即使您尚未设置颜色值,它也会返回颜色值。

答案 1 :(得分:0)

这是一个很好的解决方法!

事实上,我甚至不需要存储颜色。 如果我改为

    @IBAction func tapBlue(sender: AnyObject) {
    view.window!.tintColor = UIButton(type:UIButtonType.System).titleColorForState(.Normal)
}

这给了我正确的蓝色,即使我更改了tintColor(可能是因为我没有在视图层次结构中找到按钮)