我在iOS和MacOS上运行了以下代码,发现了一个差异。
struct ContentView: View {
var body: some View {
VStack {
Text(text)
}
}
var text: AttributedString {
let markdown = "[This is a link](https://queue.community)"
var attributedString: AttributedString = try! AttributedString(markdown: markdown)
let fullStringRange = attributedString.startIndex..<attributedString.endIndex
attributedString[fullStringRange].foregroundColor = .red
return attributedString
}
}
当我运行针对iOS的代码时,它正确地将链接颜色覆盖为红色,但当我针对MacOS时,它保持默认的蓝色。我需要在MacOS上覆盖foregroundcColor的能力。(见图片)
iOS rendering
Macos rendering
https://i.stack.imgur.com/HQzsg.jpg
请解释我如何做到这一点:它是核心功能。
我试过使用mergeAttributes,但没有成功。我也试过使用替换属性,但覆盖了整个链接,我找不到一种方法来保持链接和改变它的颜色。
1条答案
按热度按时间nuypyhwy1#
好吧,我的回答是。
您可以只使用
attributedString.foregroundColor = .red
而不使用范围设置。但是,您的代码在使用Xcode 14.3的ios 16和macos13.4上运行良好。我在真实的设备上测试了它,而不是预览。
所以升级您的macOS > 13.3