使用Swift在整个应用程序中更改UILabel的textColor

Roh*_*uru 8 uilabel ios swift

在Swift中有什么办法我可以在整个应用程序中立刻更改我的UILabel的文本颜色属性吗?我尝试过使用appeareance属性,但这对UILabel textColor不起作用.任何方式或任何工作的库.

Rob*_*ler 6

一种方法是使用颜色集.

首先在xcassets目录中创建新集

在此输入图像描述

......并根据你的意愿命名

在此输入图像描述

然后将颜色更改为您需要的颜色

在此输入图像描述

最后,将标签的颜色设置为xcassets目录中的此颜色

在此输入图像描述 在此输入图像描述

......或以编程方式

label.textColor = UIColor(named: "ColorForLabel")
Run Code Online (Sandbox Code Playgroud)

现在,当您需要更改文本颜色时,只需更改此颜色集的颜色即可


Ara*_*mad 5

在你的AppDelegate.swift内部didFinishLaunchingWithOptions函数中试试这个:

UILabel.appearance(whenContainedInInstancesOf: [UIView.self]).textColor = .red //or what color you want
Run Code Online (Sandbox Code Playgroud)


Vin*_*Joy 1

创建一个 UILabel 类并将该类中的 textColour 设置为您想要的颜色。并将此类分配给您在应用程序中使用的所有标签。如果您想在会话期间更改所有标签的颜色(例如通过按钮操作),您可以使用NotificationCenter 和 Singleton 来实现此目的。

class LabelColor {
    static let shared = LabelColor()
    var color = UIColor.red
}

class ColoredLabel: UILabel {

    override func awakeFromNib() {
        super.awakeFromNib()
        textColor = LabelColor.shared.color
        NotificationCenter.default.addObserver(self, selector: #selector(self.changeColor(notification:)), name: Notification.Name(rawValue: "ChangeColor"), object: nil)
    }

    @objc func changeColor(notification: Notification) {
        let newColor = UIColor.blue
        textColor = newColor
        LabelColor.shared.color = newColor
    }

    deinit {
        NotificationCenter.default.removeObserver(self)
    }
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func changeColour(_ sender: UIButton) {
        NotificationCenter.default.post(name: Notification.Name("ChangeColor"), object: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

故事板