在Swift中有什么办法我可以在整个应用程序中立刻更改我的UILabel的文本颜色属性吗?我尝试过使用appeareance属性,但这对UILabel textColor不起作用.任何方式或任何工作的库.
一种方法是使用颜色集.
首先在xcassets目录中创建新集
......并根据你的意愿命名
然后将颜色更改为您需要的颜色
最后,将标签的颜色设置为xcassets目录中的此颜色
......或以编程方式
label.textColor = UIColor(named: "ColorForLabel")
Run Code Online (Sandbox Code Playgroud)
现在,当您需要更改文本颜色时,只需更改此颜色集的颜色即可
在你的AppDelegate.swift内部didFinishLaunchingWithOptions函数中试试这个:
UILabel.appearance(whenContainedInInstancesOf: [UIView.self]).textColor = .red //or what color you want
Run Code Online (Sandbox Code Playgroud)
创建一个 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)
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |