所有UILabel的默认文本颜色

Adr*_*ski 10 xcode objective-c ios swift

我想为我的应用中的所有UILabel设置默认文本颜色.我找到了这个:

UILabel.appearance().textColor = UIColor.red
Run Code Online (Sandbox Code Playgroud)

这有效,但是当我想在其故事板中为特定标签设置其他颜色时,它无法完成 - 所有标签仍然是红色的.

是否可以通过在故事板中设置它来为所有UILabel定义默认文本颜色,然后在故事板(而不是代码)中为某些UILabel更改它?或者使用Appearance API在代码中设置默认颜色,并为storyboard中的某些标签更改它?

Muh*_*nan 10

使用CustomLabel.swift标记的SubClass.您可以使用IBDesignable名为的属性设置文本颜色txtColor

下面是代码工作示例

import UIKit

    @IBDesignable  class CustomLabel: UILabel {

        @IBInspectable var txtColor: UIColor = UIColor.grayColor() {
            didSet {
                self.textColor = txtColor
            }
        }

        func setup() {
           self.textColor = txtColor
        }

        override func awakeFromNib() {
            setup()
        }

        override func prepareForInterfaceBuilder() {
            setup()
        }

    }
Run Code Online (Sandbox Code Playgroud)


Lef*_*ris 6

穆罕默德的建议还有另一种选择。替代方法是使用UIAppearance代理,但指定将其应用于的类。

在这种情况下,您可以这样使用它:

UILabel.appearanceWhenContainedInInstancesOfClasses([MyViewController.self, MyotherViewController.self]).textColor = UIColor.red
Run Code Online (Sandbox Code Playgroud)

但是,上述内容仅允许您在某些类中设置自己的textColor。在设置为启用代理的情况下,您将无法设置文本颜色。

由您决定哪种方法更适合您的情况