更改每个目标的全局色调

时间:2015-10-08 16:09:03

标签: ios swift2 tintcolor

我正在编写一个包含多个目标的应用,并希望单独更改每个目标的默认色调颜色。我有一个包含每个目标常量的文件,包括色调颜色的定义kTintColor

这就是我试图做的事情:

self.window?.tintColor = kTintColor
UIView.appearance().tintColor = kTintColor

色调颜色随着我的想法而改变,但它会引起另一个问题:
在我的一些观点中,我需要更改单个UIBarButtonItem的色调,而其他人保持全局色调。 这可以通过致电self.barBtnX.tintColor = ...来实现 如果我在storyboard文件中使用全局色调颜色集,则按预期工作。但是,在更改AppDelegate中的色调颜色后,它将停止工作。

还有其他办法吗?

修改
我可以更改每个目标的全局色调颜色,但在我这样做之后,我再也无法更改单个UIBarButtonItem的色调颜色。我想知道是否有办法实现这两个目标。

2 个答案:

答案 0 :(得分:0)

首先,您可以创建一个字典,每个键/值对都是目标名称/色调颜色值。

var TintColorDictionary:NSDictionary = [
    "target_name_1": "tint_color_1",
    "target_name_2": "tint_color_2",
              "...": "..."
];

然后,看看这里:How to get a target name in iOS

然后只需传入目标名称并获得你的色彩颜色!

祝你好运!

答案 1 :(得分:0)

我找到了解决问题的方法。这是一个循序渐进的指南:

<强> TLDR:
不要改变色调颜色,改变图像渲染模式。

定义色彩
为每个目标添加名为Constants-TargetName.swift的文件,并将其添加到相应目标的buid设置中。在该文件中,定义了全局色调颜色(如果需要,还有该目标的其他全局常量) let kTintColor = UIColor(red: 0.0, green: 0.0, blue: 170.0/255.0, alpha: 1.0)

设置全局色调
更改AppDelegate.swiftapplication(didFinishLaunchingWithOptions)内的全局色调颜色:
UIView.appearance().tintColor = kTintColor

更改UIBarButtonItem 的颜色 将图像设置为要将其更改为的颜色。我的情况是,我有一个蓝色的全局色调,图像是灰色的。所以下面的代码在灰色和蓝色之间切换颜色。 不要更改单个UIBarButtonItem的色调颜色,而是更改其图像:

if globalTintColor {
  self.btn.image = UIImage(named: "ImgName")?.imageWithRenderingMode(.AlwaysTemplate)
} else {
  self.btn.image = UIImage(named: "ImgName")?.imageWithRenderingMode(.AlwaysOriginal)
}