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)
穆罕默德的建议还有另一种选择。替代方法是使用UIAppearance代理,但指定将其应用于的类。
在这种情况下,您可以这样使用它:
UILabel.appearanceWhenContainedInInstancesOfClasses([MyViewController.self, MyotherViewController.self]).textColor = UIColor.red
Run Code Online (Sandbox Code Playgroud)
但是,上述内容仅允许您在某些类中设置自己的textColor。在设置为启用代理的情况下,您将无法设置文本颜色。
由您决定哪种方法更适合您的情况