更改全局色调颜色 - iOS7 / iOS8

时间:2013-09-23 13:20:10

标签: ios7 uicolor tintcolor

我们如何通过代码更改 iOS7 / iOS8上的全局色调?我想更改使用此属性的多个对象,但不更改每个对象,这就是我想使用全局色调属性的原因。

7 个答案:

答案 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:就更清洁了。

Global Tint in File Inspector

答案 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]

正在执行以下操作:

  1. 从故事板上设置全球色彩。

OR

  1. 设置窗口的色调

对于整个应用程序:

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
    }