iOS - UILabel更改已禁用标签的外观

时间:2011-12-13 18:07:04

标签: ios ipad uilabel

继我昨天的问题之后,我正在使用UILabels的视图,输出到外部显示器。

标签上可以设置文字,除非它们被禁用。但是(很明显)一个禁用的标签让它的文字变成灰色。无论如何都要覆盖这种行为?

我能想到的唯一另一件事就是将UILabel子类化并将变量设置为可编辑,但会影响序列化吗?

谢谢!

4 个答案:

答案 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)
  }
}