我想为我的应用中的所有UILabel设置默认文本颜色。我发现了这个:
UILabel.appearance().textColor = UIColor.red
这样可行,但是当我想在其故事板中为特定标签设置其他颜色时,无法完成 - 所有标签仍为红色。
是否可以通过在故事板中设置它来为所有UILabel定义默认文本颜色,然后在故事板(而非代码)中为某些UILabel更改它?或者使用Appearance API在代码中设置默认颜色,并为storyboard中的某些标签更改它?
答案 0 :(得分:10)
使用CustomLabel.swift标记的子类。您可以使用名为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()
}
}
答案 1 :(得分:4)
还有穆罕默德建议的替代方案。 另一种方法是使用UIAppearance代理,但指定应用它的类。
在这种情况下,你会像这样使用它:
UILabel.appearanceWhenContainedInInstancesOfClasses([MyViewController.self, MyotherViewController.self]).textColor = UIColor.red
以上,只允许你在某些类中设置textColor你自己。在代理设置为启用的那些中,您将无法设置文本颜色。
由您决定哪种方法更适合您的情况