继我昨天的问题之后,我正在使用UILabels的视图,输出到外部显示器。
标签上可以设置文字,除非它们被禁用。但是(很明显)一个禁用的标签让它的文字变成灰色。无论如何都要覆盖这种行为?
我能想到的唯一另一件事就是将UILabel子类化并将变量设置为可编辑,但会影响序列化吗?
谢谢!
答案 0 :(得分:3)
如果您想阻止用户与标签进行交互,可以设置一个名为userInteractionEnabled的属性。
答案 1 :(得分:1)
是可以设置颜色和alpha属性。
myLabel.textColor = [UIColor colorWithRed:0.3 green:0.6 blue:0.9 alpha:0.5]
// set 'alpha' to something between 0-1 ------^^^
答案 2 :(得分:1)
没关系,似乎行为无法改变。我只是将UILabel子类化,并添加了一个变量来检查它是否可编辑。干杯。
答案 3 :(得分:0)
如果你需要带disabledTextColor
的标签,类似于highlightedTextColor
,你必须继承UILabel并进行自定义文本绘制
final class Label: UILabel {
var disabledTextColor: UIColor? {
didSet { setNeedsDisplay() }
}
override func drawText(in rect: CGRect) {
guard
let color = disabledTextColor,
!isEnabled,
let font = font,
let text = text
else {
super.drawText(in: rect)
return
}
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = textAlignment
NSAttributedString(
string: text,
attributes: [
.font: font,
.paragraphStyle: paragraph.copy() as! NSParagraphStyle,
.foregroundColor: color
]
)
.draw(in: rect)
}
}