从代码中获取全局色调颜色

时间:2013-10-02 12:52:13

标签: ios7 xcode5 tintcolor

有没有办法可以通过代码从我的项目中获取全局色调?为了避免误解,我的意思是全局色调颜色,我可以在文件检查器中设置。

6 个答案:

答案 0 :(得分:32)

在app delegate中,您可以通过

进行设置
UIColor *globalTint = [[[UIApplication sharedApplication] delegate] window].tintColor;

答案 1 :(得分:30)

易。

目标C:

UIColor *tintColor = [[self view]tintColor];

夫特:

let tintColor = self.view.tintColor;

这应该在app上设置tintColor。如果更改它,则应更新此属性。这假设您在viewController或其中一个子类中,并且您没有在此视图和窗口之间的某个superView中覆盖tintColor。

更新:请注意,如果您尝试获取尚未添加到窗口的视图控制器的色调颜色,则它将不具有自定义色调颜色,因为此颜色是从窗口对象。感谢@ManuelWa在评论中指出这一点。

答案 2 :(得分:2)

[UIApplication sharedApplication].delegate.window.rootViewController.view.tintColor

似乎工作。

答案 3 :(得分:1)

Max的回答是正确的,但我发现你必须得到navigationController的窗口:

self.navigationController.view.window.tintColor = [UIColor redColor];

但是,请注意,如果您已从Storyboard手动设置tintColor,则无法使用此功能。如果您已经这样做,将使用Storyboard中的值。我filed a bug with Apple就此问题。我认为即使我们从故事板设置tintColor,也不应忽略此代码。

答案 4 :(得分:1)

[UIApplication sharedApplication].keyWindow.tintColor;

答案 5 :(得分:0)

Swift 4.x

extension UIColor {
    static var tintColor: UIColor {
        get {
            return UIApplication.shared.keyWindow?.rootViewController?.view.tintColor ?? .red
        }
    }
}

<强>用法

textField.textColor = .tintColor