【问题标题】:iOS - UILabel change appearance of a disabled labeliOS - UILabel 更改禁用标签的外观
【发布时间】:2012-01-19 14:34:45
【问题描述】:

关于我昨天的问题,我正在使用带有 UILabel 的视图,输出到外部监视器。

标签上可以设置文本,除非它们被禁用。但是(显然)禁用标签的文本是灰色的。有没有办法覆盖这种行为?

我能想到的唯一另一件事是继承 UILabel 并有一个变量将其设置为可编辑,但这会影响序列化吗?

谢谢!

【问题讨论】:

  • 在覆盖中你想改变什么?文字的颜色?
  • 如果可能的话,我希望禁用的标签看起来与启用的标签完全相同?
  • 听起来你只是想要一个标签。您想对现有标签更改什么行为?
  • 我希望标签在禁用时不会变灰。

标签: ios ipad uilabel


【解决方案1】:

如果要阻止用户与标签交互,可以设置一个名为 userInteractionEnabled 的属性。

【讨论】:

  • 禁用用户交互会停止诸如调整大小等之类的事情,对吧?
  • userInteractionEnabled 仅适用于使用该应用的用户。您的编程代码无效...
  • 我知道,在显示视图之前,用户需要能够移动标签并调整其大小
【解决方案2】:

是的,可以设置颜色和alpha属性。

myLabel.textColor = [UIColor colorWithRed:0.3 green:0.6 blue:0.9 alpha:0.5]
//                          set 'alpha' to something between 0-1 ------^^^

【讨论】:

  • 我已经完成了,但是当标签被禁用时,标签随后变灰。我想改变这种行为。谢谢。
  • 我不认为 UILabel 不能通过用户交互来更改。即使您使用普通标签也应该足够了。你能解释一下你想使用禁用标签的原因吗?
  • 我认为这是 UIlabel 的功能。正常使用应该没问题。在代码中更改标签的值之前,您无法从用户界面更改 UILabel 的值。
  • 抱歉,解释不佳。 1.用户在屏幕上添加标签和移动等。 2.标签显示在外部屏幕上。 3. 线程用新文本更新标签文本,保持禁用标签不变。
  • 所以检查标签是否被禁用,不要让更新线程在它上面工作。
【解决方案3】:

没关系,行为似乎无法改变。我只是将 UILabel 子类化并添加了一个变量来检查它是否可编辑。伙计们干杯。

【讨论】:

    【解决方案4】:

    如果你需要有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)
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多