仅更改默认 UILabel 的 UIAppearance
Posted
技术标签:
【中文标题】仅更改默认 UILabel 的 UIAppearance【英文标题】:Change UIAppearance of default UILabels only 【发布时间】:2018-01-29 14:40:34 【问题描述】:我正在构建一个带有主题切换器的应用,我想使用 Appearance 来切换具有默认颜色(黑色 -> 白色)的 UILabel 的 textColor
。
我认为这是可能的,并为非默认标签创建了子类,所以我只需要定位没有子类或保持默认颜色的 UILabel。
当我使用以下内容更改外观时:
UILabel.appearance().textColor = UIColor.white
每个标签,包括子类和系统标签都变成白色,UIAppearance 覆盖了控件级别的自定义。我觉得将 UIAppearance 作为默认状态并在其上应用任何自定义是有意义的。
有没有办法使用 UIAppearance 来解决这个问题?还是我必须手动编辑我必须添加子类和自定义属性的每个标签?
感谢您的帮助!
【问题讨论】:
【参考方案1】:我发现解决此问题的唯一方法是将 textColor 变量设置为只读。但它有效:
UILabel.appearance().textColor = UIColor.orange
还有自定义类:
class MyLabel: UILabel
override var textColor: UIColor!
get return UIColor.blue
set
【讨论】:
以上是关于仅更改默认 UILabel 的 UIAppearance的主要内容,如果未能解决你的问题,请参考以下文章