在iOS 13暗模式下,我在两种情况下使用UIColor.link
:
NSAttributedString
的问题:尽管我在两种情况下都使用UIColor.link
,但它们呈现为不同的颜色。
为NSAttributedString
渲染的颜色较深,我发现很难在黑色背景上读取该颜色。
NSAttributedString
的代码
if #available(iOS 13.0, *) {
linkAttributes[.foregroundColor] = UIColor.link
} else {
linkAttributes[.foregroundColor] = UIColor.blue
}
// .font is the only other attribute I set
let attStr = NSAttributedString(string: cardName, attributes: linkAttributes)
我在以编程方式实例化的UIButton子类中使用此属性字符串:
class ConditionButton: UIButton {
required init() {
super.init(frame: .zero)
configureOnce()
}
func configureOnce() {
self.titleLabel?.numberOfLines = 0
self.titleLabel?.lineBreakMode = .byWordWrapping
self.titleLabel?.font = labelFont
self.contentHorizontalAlignment = .left
}
// some more code that does self.setAttributedTitle(attributedString, for: .normal)
}
顶部的文本是UIButton
带有NSAttributedString
的子类的难以阅读的标签,底部的图像和{ {1}}
为什么会这样?如何为UIButton
获得相同的可读颜色?
答案 0 :(得分:1)
这是...的组合
我的错误:
当我问这个问题时,我没有注意到我的代码中包含以下行:
linkAttributes[.link] = url
由于我现在使用了按钮,因此不再需要此属性。
插入NSAttributedString
:
使用时
linkAttributes[.link] = url
在NSAttributedString
中,Apple会用深蓝色覆盖该颜色,直到iOS 12
为止,这种颜色都可以。
看来,苹果公司已经忘记使用UIColor.link
来访问NSAttributedString
中的链接。
因此,在暗模式下使用.link
属性的每个人都会产生这种难以理解的深蓝色。
写完这个答案后,我会提起雷达的。