You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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

火山引擎 最新活动