仅更改默认UILabel的UIAppearance

时间:2018-01-29 14:40:35

标签: ios iphone swift uikit uiappearance

我正在使用主题切换器构建应用,并且我想使用外观来切换具有默认颜色(黑色 - >白色)的UILabel的textColor

我认为这是可能的并且为非默认标签创建了子类,所以我只需要使用没有子类或保持默认颜色的UILabel。

当我使用以下内容更改外观时:

UILabel.appearance().textColor = UIColor.white

每个Label,包括子类和系统标签都变为白色,UIAppearance覆盖控件级自定义。我认为将UIAppearance作为默认状态以及在其上应用任何自定义都是有意义的。

有没有办法使用UIAppearance来解决这个问题?或者我是否必须手动编辑每个标签以添加子类和自定义属性?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我发现克服这个问题的唯一方法是将textColor变量设为只读。但它的确有效:

UILabel.appearance().textColor = UIColor.orange

自定义类:

class MyLabel: UILabel {
    override var textColor: UIColor! {
        get { return UIColor.blue }
        set {}
    }
}