1

在 iOS 13 暗模式下,我UIColor.link用于两种情况:

  • foregroundColor 颜色为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)
}

顶部的文本是UIButtonwith的子类的一个难以阅读的标签NSAttributedString,在底部,有一个易于阅读UIButton的图像和tintColor = UIColor.link

在此处输入图像描述

为什么会这样,我怎样才能获得相同的可读颜色NSAttributedString

4

1 回答 1

1

这是一个组合...

我的错:

当我问这个问题时,我没有注意到我的代码中有以下行:

linkAttributes[.link] = url

我不再需要这个属性,因为我现在是一个按钮。

错误NSAttributedString

使用时

linkAttributes[.link] = url

在一个NSAttributedString,Apple 用深蓝色覆盖颜色,直到iOS 12.

看来,Apple 忘记UIColor.link使用NSAttributedString.

因此,在暗模式下使用该属性的每个人.link都会产生这种不可读的深蓝色。

写完这个答案后,我会提交雷达。

于 2019-09-18T19:55:34.283 回答