我使用以下代码使用foreground color
更改属性字符串的font
和Swift
。但是字体完全没有任何问题地改变,但foreground color
没有改变
var checklistText = NSMutableAttributedString()
checklistText = NSMutableAttributedString(string: "\(lblChecklistName.text!),\(checklistName)")
checklistText.addAttribute(NSFontAttributeName,
value: UIFont(
name: "Helvetica",
size: 11.0)!,
range: NSRange(location: lblChecklistName.text!.length(), length: checklistName.length()))
checklistText.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSRange(location: lblChecklistName.text!.length(), length: checklistName.length()+1))
lblChecklistName.attributedText = checklistText
答案 0 :(得分:1)
要使foregroundColor
工作,您需要将.strokeWidth
设置为负数:
let attributes : [ NSAttributedString.Key : Any ] = [.font : UIFont(name: "Helvetica", size: 11.0),
.foregroundColor : UIColor.red,
.strokeWidth : -5]
let stringWithAttributes = NSAttributedString(string: "YOUR STRING", attributes: attributes)
答案 1 :(得分:0)
参考表格:NSMutableAttributedString
var myString:NSString = "I AM KIRIT MODI"
var myMutableString = NSMutableAttributedString()
myMutableString = NSMutableAttributedString(string: myString as
String, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 18.0)!])
myMutableString = NSMutableAttributedString(string: myString as String, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 18.0)!])
myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSRange(location:2,length:2))
lbl_First.attributedText = myMutableString
见图片
答案 2 :(得分:0)
我遇到了同样的问题。尽管我没有使用范围来构造AttributedString
我的代码看起来像
self.contentTextLabel.attributedText = NSAttributedString(string: "content",
attributes: [.foregroundColor: UIColor.red, .background: UIColor.blue])
运行时,背景色显示为蓝色,但是前景色不显示为红色。我认为这是个棘手的问题,所以我也在Objective-C中尝试了一下,但仍然行不通。
我正在使用情节提要,并通过删除该标签上的命名颜色集来解决此问题。我认为这是Apple的错误,标签上设置的命名颜色以某种方式覆盖了属性字符串中设置的前景色。
答案 3 :(得分:0)
在我的情况下,它发生在 13 岁以下的 ios 上。添加负 strokeWidth 就行了。
NSAttributedString.Key.strokeWidth: -3.0
答案 4 :(得分:0)
您应该检查标签文本颜色。如果在给出属性文本值后设置标签文本颜色,它可能会覆盖属性颜色。
yourLabel.attributedText = attrStr //attributed string
yourLabel.textColor = UIColor.black
答案 5 :(得分:0)
将strokeWidth 设置为负数,将strokeColor 设置为所需的颜色。 这对我有用。它适用于 namedColor。
let gdprString = "test test test"
let gdprAttributes = [
NSAttributedString.Key.underlineStyle:
NSUnderlineStyle.single.rawValue,
NSAttributedString.Key.font: UIFont.systemFont(ofSize: 15.0),
NSAttributedString.Key.link: gdprString,
NSAttributedString.Key.strokeWidth: -3.0,
NSAttributedString.Key.strokeColor: UIColor.blue
] as [NSAttributedString.Key : Any]
答案 6 :(得分:0)
2021 年 4 月,我遇到了同样的错误,上面的内容没有任何帮助。但这有帮助:
在设置 textColor
之前,将标签的 attributedText
设置为任何颜色。
let label = UILabel()
label.textColor = .black
label.attributedText = NSAttributedString(string: "Hello, World!", attributes: [.foregroundColor: UIColor.red])