gpt4 book ai didi

swift - NSAttributedStringKey.foregroundColor 不工作

转载 作者:搜寻专家 更新时间:2023-10-31 08:05:43 24 4
gpt4 key购买 nike

我正在使用 ZSWTappableLabelZSWTaggedString 来显示标签内的链接。

import ZSWTappableLabel
import ZSWTaggedString

pod 版本是:

  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)
}

最佳答案

这个有效:

   extension HomeViewController:  ZSWTappableLabelTapDelegate {
static let urlAttributeName = NSAttributedStringKey(rawValue: "URL")

func setLinks(){
termsPrivacyLabel.tapDelegate = self

enum LinkType: String {
case privacy = "privacy"
case terms = "terms"

var URL: Foundation.URL {
switch self {
case .privacy:
return Foundation.URL(string: "myprivacyurl")!
case .terms:
return Foundation.URL(string: "mytermsurl")!
}
}
}

let options = ZSWTaggedStringOptions()
options["link"] = .dynamic({ tagName, tagAttributes, stringAttributes in
guard let typeString = tagAttributes["type"] as? String,
let type = LinkType(rawValue: typeString) else {
return [NSAttributedStringKey: AnyObject]()
}

return [
.tappableRegion: true,
.tappableHighlightedForegroundColor: UIColor.white,
.foregroundColor: UIColor.lightGray,
.underlineStyle: NSUnderlineStyle.styleNone.rawValue,
.font: UIFont.boldSystemFont(ofSize: 13.0),
HomeViewController.urlAttributeName: type.URL
]
})

let string = NSLocalizedString("By signing in, you agree to the <link type='terms'>terms</link> and <link type='privacy'>privacy</link>.", comment: "")
termsPrivacyLabel.attributedText = try? ZSWTaggedString(string: string).attributedString(with: options)
}

func tappableLabel(_ tappableLabel: ZSWTappableLabel, tappedAt idx: Int, withAttributes attributes: [NSAttributedStringKey : Any] = [:]) {
guard let URL = attributes[HomeViewController.urlAttributeName] as? URL else {
return
}

if #available(iOS 9, *) {
show(SFSafariViewController(url: URL), sender: self)
} else {
UIApplication.shared.openURL(URL)
}
}

关于swift - NSAttributedStringKey.foregroundColor 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52724383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com