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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从代码中获取全局色调颜色相关的知识,希望对你有一定的参考价值。

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

答案

在app delegate中,您可以设置它

UIColor *globalTint = [[[UIApplication sharedApplication] delegate] window].tintColor;
另一答案

简单。

目标C:

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

迅速:

let tintColor = self.view.tintColor;

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

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

另一答案
[UIApplication sharedApplication].delegate.window.rootViewController.view.tintColor

似乎工作。

另一答案

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

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

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

另一答案
[UIApplication sharedApplication].keyWindow.tintColor;
另一答案

Swift 4.x:

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

用法:

textField.textColor = .tintColor

以上是关于从代码中获取全局色调颜色的主要内容,如果未能解决你的问题,请参考以下文章

iOS如何在设置全局色调颜色时保持导航项颜色不变?

快速更改默认全局色调颜色

如何仅从单面绘制带有色调颜色和圆角的 UIButton

全局更改 UINavigationBar 条的色调颜色

UIBarButtonItem 标题文本始终是全局色调颜色

Watchkit:以编程方式设置全局色调