Я использую ZSWTappableLabel
и ZSWTaggedString
, чтобы показать ссылки внутри ярлыка.
import ZSWTappableLabel
import ZSWTaggedString
Версии модуля:
pod 'ZSWTappableLabel', '~> 2.0'
pod 'ZSWTaggedString/Swift', '~> 4.0'
Ссылки раньше отображались белым (тот же цвет, что и на этикетке) по умолчанию ранее, но после некоторого обновления, которое произошло недавно (возможно,обновление pod или версия xcode, я не могу точно определить, что именно), ссылки начали появляться синим цветом.Установка NSAttributedStringKey.foregroundColor
на белый, похоже, ни на что не влияет.NSAttributedStringKey.backgroundColor
действительно влияет на это, но по какой-то причине foregroundColor
, кажется, не имеет никакого эффекта.
Как я могу установить ссылки в белом цвете?
func setTermsAndPrivacyLinkLabel(){
termsAndPrivacyLabel.tapDelegate = self
let options = ZSWTaggedStringOptions()
options["link"] = .dynamic({ tagName, tagAttributes, stringAttributes in
guard let type = tagAttributes["type"] as? String else {
return [NSAttributedStringKey : Any]()
}
var foundURL: NSURL?
switch type {
case "privacy":
foundURL = NSURL(string: "\(privacyUrl)")!
case "tos":
foundURL = NSURL(string: "\(termsUrl)")!
default:
break
}
guard let URL = foundURL else {
return [NSAttributedStringKey : Any]()
}
return [
.tappableRegion: true,
NSAttributedStringKey.foregroundColor: UIColor.white,
NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 13.0),
.link: foundURL
]
})
let string = NSLocalizedString("By logging in, you agree to our <link type='tos'>terms</link> and <link type='privacy'>privacy</link>.", comment: "")
termsAndPrivacyLabel.attributedText = try? ZSWTaggedString(string: string).attributedString(with: options)
}
func tappableLabel(_ tappableLabel: ZSWTappableLabel, tappedAt idx: Int, withAttributes attributes: [NSAttributedStringKey : Any] = [:]) {
guard let url = attributes[.link] as? URL else {
return
}
UIApplication.shared.openURL(url)
}