gpt4 book ai didi

ios - 为什么 NSMutableAttributedString 在某些情况下会忽略背景色属性?

转载 作者:行者123 更新时间:2023-11-29 10:33:22 25 4
gpt4 key购买 nike

我遇到了一个令人沮丧的问题。我想要一个标签来显示文本字符串,其中部分字符串具有不同的背景颜色。

此代码有效:

let s = NSMutableAttributedString(string: "test me bar", attributes: [:])
s.addAttribute(NSBackgroundColorAttributeName, value: UIColor.yellowColor(),
range: NSMakeRange(4, 2))
s.addAttribute(NSBackgroundColorAttributeName, value: UIColor.blueColor(),
range: NSMakeRange(8, 2))

self.detailDescriptionLabel.attributedText = s

enter image description here

但如果我恰好删除了对 addAttribute 的调用之一(哪个无关紧要),以便我指定字符串的一个范围以具有背景颜色属性,则没有背景颜色显示在字符串中的任何位置。

enter image description here

我在 iOS 8.1 上,这发生在模拟器和我的 iPhone 6 上。我在我的代码中发现了这个问题,并在一个空项目中仅使用上面的代码片段重现了它。

有什么想法吗?我在这里拔头发。这是该问题的精简版,但对于我的项目而言,能够拥有只有一个区域具有背景颜色的字符串非常重要。

编辑 如果我将其中一种背景颜色设置为 UIColor.clearColor(),那么一切都会按预期工作。我是否在查看 UIKit 中的错误?

最佳答案

你首先需要在整个文本中应用 NSBackgroundColorAttributeName 透明色。

[s addAttribute:NSBackgroundColorAttributeName value:[UIColor clearColor] range:(NSRange){0, s.length}];

然后您可以在要突出显示的文本范围内应用第二种颜色。

[s addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:(NSRange){0, 2}];

对于 Swift:

mutableAttributedString.addAttribute(NSAttributedString.Key.backgroundColor, value: UIColor.clear , range: {0, 2})

mutableAttributedString.addAttribute(NSAttributedString.Key.backgroundColor, value: UIColor.yellow , range: {0, 2})

关于ios - 为什么 NSMutableAttributedString 在某些情况下会忽略背景色属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28378346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com