【问题标题】:Change UIAppearance of default UILabels only仅更改默认 UILabel 的 UIAppearance
【发布时间】:2018-01-29 14:40:34
【问题描述】:

我正在构建一个带有主题切换器的应用,我想使用 Appearance 来切换具有默认颜色(黑色 -> 白色)的 UILabel 的 textColor

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

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

UILabel.appearance().textColor = UIColor.white

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

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

感谢您的帮助!

【问题讨论】:

    标签: ios iphone swift uikit uiappearance


    【解决方案1】:

    我发现解决此问题的唯一方法是将 textColor 变量设置为只读。但它有效:

    UILabel.appearance().textColor = UIColor.orange
    

    还有自定义类:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2023-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多