Swift如何在标签中的文本周围添加背景颜色?

时间:2018-02-23 02:55:08

标签: ios swift variables label

如何在interest变量中的每个变量周围添加背景颜色?在文本周围而不是空格。

var interests = "\(int01)     \(int02)     \(int03)     \(int04)     \(int05)     \(int06)"

我希望它看起来像这样: enter image description here

3 个答案:

答案 0 :(得分:5)

您可以使用正则表达式查找除空格之外的任何内容,使用while循环在字符串中查找其出现位置并使用这些范围更改属性字符串的背景颜色:

Swift 4

let mutable = NSMutableAttributedString(string: interests)
var startIndex = interests.startIndex
while let range = interests.range(of: "\\S+", options: .regularExpression, range: startIndex..<interests.endIndex) {
    mutable.addAttribute(.backgroundColor, value: UIColor.cyan, range: NSRange(range, in: interests))
    startIndex = range.upperBound
}
label.attributedText = mutable

注意:如果您想在文本周围添加空格,可以将正则表达式更改为" \\S+ ",并且不要忘记在原始兴趣字符串的开头和结尾添加空格。

答案 1 :(得分:0)

let attributedString = NSMutableAttributedString(string: interests)
attributedString.addAttribute(NSBackgroundColorAttributeName, value: yourColor, range: NSMakeRange(startOfWord, lengthOfWord))

答案 2 :(得分:-1)

您可以使用UICollectionView,其单元格的标签跨越整个单元格。然后每个单元对应于单个单词。这样,您可以将标签或单元格背景颜色设置为您想要的任何颜色。

为了便于实现,我会将您的start powershell {.\scriptInNewPSWindow.ps1} 变量转换为字符串数组。这样,您可以轻松计算所需的单元格数量,并为每个单元格提供正确的字符串。