我们如何通过代码更改iOS7/iOS8 上的全局 tint 颜色?我想更改使用此属性的多个对象,但不更改每个对象,这就是我想使用全局 tint 属性的原因。
问问题
41505 次
7 回答
114
只需更改应用程序委托中的UIWindow
' tintColor
,它会默认自动传递给它的所有UIView
后代。
[self.window setTintColor:[UIColor greenColor]];
于 2013-09-23T13:22:15.807 回答
68
[[UIView appearance] setTintColor:[UIColor greenColor]];
于 2013-10-02T15:24:14.397 回答
12
您可以通过设置窗口的 tint 属性为整个应用程序指定一种色调颜色。为此,您可以使用类似于以下的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.tintColor = [UIColor purpleColor];
return YES;
}
于 2013-11-02T16:04:58.490 回答
4
为 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()
于 2016-08-17T16:35:28.883 回答
2
为 Swift 5 更新
在 App Delegate 中写入:
self.window?.tintColor = UIColor.green
于 2019-07-31T08:09:02.207 回答
-1
以下事情对我不起作用:
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]
以下工作:
- 从故事板设置全局色调颜色。
或者
- 设置窗口的色调
对于整个应用程序:
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
}
于 2020-04-13T10:51:19.777 回答