有背景颜色换行 UILabel [重复]

Posted

技术标签:

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

我正在尝试显示以下内容

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

【问题讨论】:

子视图?子类化?没有一点代码很难说。现在我看到一个 container 视图 - 背景颜色是白色或透明 - 有 2 个,也许是 3 个子视图,每个 UILabel 具有红色背景和白色字体颜色。但同样,鉴于您提供的小细节,我不确定我是否正在解决 *your8 问题。 【参考方案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 中包装视图的颜色,可能性是

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

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

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

【讨论】:

以上是关于有背景颜色换行 UILabel [重复]的主要内容,如果未能解决你的问题,请参考以下文章

UIProgressBar:如何根据背景颜色更改 UILabel 颜色

带有背景的 UILabel 换行

如何将 UILabel 文本颜色与其背景匹配? [复制]

UILabel设置背景色/阴影/描边

更改数组中 UILabel 的背景颜色

UILabel 背景颜色泄漏到边框