BonMot
BonMot copied to clipboard
When there are multiple clickable texts in the string, the color cannot be set differently
let htmlStr = "You can parse HTML with <strong>strong</strong>, <em>em</em>, and even <strong><em>nested strong and em</em></strong> tags."
let emStr = StringStyle(
.link(URL("emStr://")),
.color(UIColor.red),
.underline(.single, nil)
)
let strongStr = StringStyle(
.link(URL("strongStr://")),
.color(UIColor.green),
.underline(.single, nil)
)
let style = StringStyle(
.font(.systemFont(ofSize: 30)),
.color(.black),
.xmlRules([
.style("em", emStr),
.style("strong", strongStr),
])
)
let attributedText = htmlStr.styled(with: style)
textView.linkTextAttributes = [
NSAttributedString.Key.foregroundColor: UIColor.yellow
]
textView.attributedText = attributedText
Two links are set. If you do not set this sentence,
textView.linkTextAttributes = [
NSAttributedString.Key.foregroundColor: UIColor.yellow
]
![image](https://user-images.githubusercontent.com/15611129/173232107-63c26e0b-d4ac-417d-9800-e75227058674.png)
they will all show blue. After setting, they will all turn yellow. How to set two different colors, and you can click the link,please help
Hi @zuqiu123, and thanks for your report. Unfortunately, I think this is a limitation of UITextView
/UILabel
, where it won't let you override the color of individual links. I don't know if TTTAttributedLabel supports multicolored links within the same attributed string, but it's worth a look.
You might try this as well, although I haven't tested it either https://github.com/zacwest/ZSWTappableLabel