SwiftUI macOS端Markdown链接前景色无法覆盖问题求助
解决方案
macOS 中通过 Markdown 生成的 AttributedString,链接部分会自带独立的前景色属性,其优先级高于全局设置,因此直接给整个字符串设置 foregroundColor 不会覆盖链接的默认蓝色。要解决这个问题,需要针对性修改链接部分的属性:
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) // 遍历所有属性片段,找到链接并修改颜色 for run in attributedString.runs { if run.link != nil { let range = run.range attributedString[range].foregroundColor = .red } } return attributedString } }
这个方法会保留原有的链接跳转功能,同时将链接文本的颜色强制改为红色,在 iOS 和 macOS 上都能实现一致的显示效果。
内容的提问来源于stack exchange,提问作者Warfa
相关产品推荐
相关产品推荐

