使用SwiftyMarkdown无法修改链接颜色,如何解决?
解决SwiftyMarkdown链接颜色不生效的问题
我来帮你搞定这个问题!你遇到的情况是因为setFontColorForAllStyles(with: .white)会覆盖所有样式的颜色设置,包括链接样式。虽然你之后设置了md.link.color = .red,但由于SwiftyMarkdown的Style是值类型(结构体),直接修改属性不会自动同步到内部的样式配置里,所以你的设置没生效。
这里有两种可行的解决方案:
方案一:修改后重新赋值链接样式
先设置全局字体颜色,然后修改链接样式的颜色并重新赋值给md.link:
private func markdown(_ markdownText: String) -> SwiftyMarkdown { let md = SwiftyMarkdown(string: markdownText) // 先设置所有样式的基础颜色为白色 md.setFontColorForAllStyles(with: .white) // 修改链接样式的颜色并重新赋值 var linkStyle = md.link linkStyle.color = .red md.link = linkStyle return md } func sample() { label?.attributedText = markdown("sample [url](http://google.com)").attributedString() }
方案二:单独设置各样式颜色(避免全局覆盖)
如果你不想用全局设置,可以逐个给需要的样式设置白色,再单独指定链接的红色:
private func markdown(_ markdownText: String) -> SwiftyMarkdown { let md = SwiftyMarkdown(string: markdownText) // 设置正文、标题等样式为白色 md.body.color = .white md.heading1.color = .white md.heading2.color = .white // 可以根据需求添加其他样式,比如heading3、bold、italic等 // 单独设置链接颜色为红色 md.link.color = .red return md } func sample() { label?.attributedText = markdown("sample [url](http://google.com)").attributedString() }
这两种方法都能让链接显示为红色,其他文本保持白色,你可以根据自己的需求选择~
内容的提问来源于stack exchange,提问作者Maiko Ohkawa




