【发布时间】:2013-10-08 20:40:47
【问题描述】:
有没有办法通过代码从我的项目中获取全局色调颜色?为避免误解,我指的是全局色调颜色,我可以在文件检查器中设置。
【问题讨论】:
有没有办法通过代码从我的项目中获取全局色调颜色?为避免误解,我指的是全局色调颜色,我可以在文件检查器中设置。
【问题讨论】:
在应用程序委托中,您可以设置它
UIColor *globalTint = [[[UIApplication sharedApplication] delegate] window].tintColor;
【讨论】:
[[self view] tintColor] 确实有效。
简单。
目标 C:
UIColor *tintColor = [[self view]tintColor];
斯威夫特:
let tintColor = self.view.tintColor;
这应该会在应用程序上设置 tintColor。如果你改变它,这个属性应该得到更新。这假设您在 viewController 或其中一个的子类中,并且您没有在此视图和窗口之间的某个 superView 中覆盖 tintColor。
更新:请注意,如果您尝试获取尚未添加到窗口的视图控制器的色调颜色,那么它将没有自定义色调颜色,因为此颜色是从窗口对象。感谢@ManuelWa 在 cmets 中指出这一点。
【讨论】:
Max 的回答是正确的,但是我发现你必须得到navigationController 的窗口:
self.navigationController.view.window.tintColor = [UIColor redColor];
但是,请注意,如果您从 Storyboard 手动设置了 tintColor,这将不起作用。如果您这样做了,将使用 Storyboard 中的值。我对此有filed a bug with Apple。我认为即使我们从 Storyboard 设置了 tintColor,也不应该忽略这段代码。
【讨论】:
[UIApplication sharedApplication].delegate.window.rootViewController.view.tintColor
似乎有效。
【讨论】:
self.window?.rootViewController?.view.tintColor。在 UITabBarController 的视图中:UIApplication.shared.delegate?.window?.rootViewController.view.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
【讨论】: