【问题标题】:Have background color wrap UILabel [duplicate]有背景颜色换行 UILabel [重复]
【发布时间】:2017-11-03 02:20:47
【问题描述】:

我正在尝试显示以下内容

但是在设置文本背景颜色时,它会扩展整个背景并填充比我想要的更多,因为我只是想应用“突出显示”文本功能。任何想法将不胜感激

【问题讨论】:

  • 子视图?子类化?没有一点代码很难说。现在我看到一个 container 视图 - 背景颜色是白色或透明 - 有 2 个,也许是 3 个子视图,每个 UILabel 具有红色背景和白色字体颜色。但同样,鉴于您提供的小细节,我不确定我是否正在解决 *your8 问题。

标签: ios swift uilabel


【解决方案1】:

您可以这样做 - 首先迭代文本中的线条,然后使用线条应用背景颜色。这里我使用了Multi-line String Literals。 通过使用NSBackgroundColorAttributeName 将颜色应用于线条。

   @IBOutlet weak var myLabel: UILabel!

    myLabel.text = """
    GET
    MORE LIVES
    """
    myLabel.numberOfLines = 0
    let attributeString = NSMutableAttributedString(string: myLabel.text!)
    let labelText = myLabel.text!
    var lines: [String] = []
    labelText.enumerateLines { line, _ in
        lines.append(line)
    }
    print(lines)//lines in your text
    var startIndex = 0
    for value in lines {
    //Apply background color to lines
        attributeString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.red, range: NSRange(location: startIndex, length: value.characters.count))
        startIndex = startIndex + value.characters.count + 1
    //startIndex will locate new line's first index
    }
    //Assign attributedText to your label
    myLabel.attributedText = attributeString

【讨论】:

    【解决方案2】:

    我们不能在 iOS 中包装视图的颜色,可能性是

    1. 如 Nathan 所说,保留重复的 UILabel。
    2. 设计画布并将其分配给“UIImageView”。

    我认为最后一种可能性是更好的实现方式

    你也可以查看我的GitHub repository关于这个查询。

    【讨论】:

      猜你喜欢
      • 2012-06-16
      • 2023-03-03
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      相关资源
      最近更新 更多