我们如何通过代码更改 iOS7 / iOS8上的全局色调?我想更改使用此属性的多个对象,但不更改每个对象,这就是我想使用全局色调属性的原因。
答案 0 :(得分:106)
只需更改应用程序委托中的UIWindow
tintColor
,它就会自动默认传递给其所有UIView
个后代。
[self.window setTintColor:[UIColor greenColor]];
答案 1 :(得分:67)
[[UIView appearance] setTintColor:[UIColor greenColor]];
答案 2 :(得分:36)
有两种方法可以更改全局色调颜色。如上所述,您可以在self.window.tintColor
中更改-application:didFinishLaunchingWithOptions:
。
在我看来,更优雅的方法是在Storyboard中的 File Inspector 中设置 Global Tint ,而不选择任何内容。这样你的-application:didFinishLaunchingWithOptions:
就更清洁了。
答案 3 :(得分:12)
您可以通过设置窗口的色调属性为整个应用指定色调颜色。为此,您可以使用类似于以下内容的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.tintColor = [UIColor purpleColor];
return YES;
}
答案 4 :(得分:3)
针对Swift 2.2进行了更新
您可以从以下任何地方执行此操作:
// Get app delegate
let sharedApp = UIApplication.sharedApplication()
// Set tint color
sharedApp.delegate?.window??.tintColor = UIColor.green()
或者,如果您尝试从AppDelegate执行此操作,
self.window?.tintColor = UIColor.green()
答案 5 :(得分:1)
已为Swift 5更新
在应用程序委托中编写:
self.window?.tintColor = UIColor.green
答案 6 :(得分:0)
以下事情对我来说未完成:
navigationItem.backBarButtonItem?.tintColor = Theme.light.healthKit.BACK_BUTTON_TITLE_COLOR
navigationItem.backBarButtonItem?.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : Theme.light.healthKit.BACK_BUTTON_TITLE_COLOR], for: .normal)
self.navigationController?.navigationBar.barStyle = UIBarStyle.black
navigationController?.navigationBar.barTintColor = Theme.light.healthKit.BACK_BUTTON_TITLE_COLOR
navigationController?.navigationBar.tintColor = Theme.light.healthKit.BACK_BUTTON_TITLE_COLOR
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor : Theme.light.healthKit.BACK_BUTTON_TITLE_COLOR]
正在执行以下操作:
OR
对于整个应用程序:
let sharedApp = UIApplication.sharedApplication()
sharedApp.delegate?.window??.tintColor = UIColor.green()
对于特定控制器:
在初始化时设置窗口的颜色,并在反初始化时重新设置应用程序的默认颜色。
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
let window = UIApplication.shared.windows.first
window?.tintColor = Theme.light.healthKit.BACK_BUTTON_TITLE_COLOR
}
required init?(coder: NSCoder) {
super.init(coder: coder)
let window = UIApplication.shared.windows.first
window?.tintColor = Theme.light.healthKit.BACK_BUTTON_TITLE_COLOR
}
deinit {
let window = UIApplication.shared.windows.first
window?.tintColor = Theme.light.App.DEFAULT_TINT_COLOR
}