我遇到NSAttributedStringKey和UITextView
的问题事实上,我正在尝试这样做:
这是理论上应该起作用的代码
class ViewController: UIViewController,UITextViewDelegate {
@IBOutlet weak var txtView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
txtView.delegate = self;
let linkAttributes : [NSAttributedStringKey : Any] = [
.link: URL(string: "https://exemple.com")!,
.font:UIFont.boldSystemFont(ofSize: 18),
.foregroundColor: UIColor.blue] ;
let attributedString = NSMutableAttributedString(string: "Just
click here to do stuff...")
attributedString.setAttributes(linkAttributes, range:
NSMakeRange(5, 10))
txtView.attributedText = attributedString;
}}
但此代码显示此
所以我尝试通过添加两行额外的代码来解决问题:
let linkAttributes : [NSAttributedStringKey : Any] = [
.link: URL(string: "https://exemple.com")!,
.font:UIFont.boldSystemFont(ofSize: 18),
.foregroundColor: UIColor.blue,
.strokeColor : UIColor.black,//new line
.strokeWidth : -1,//new line
] ;
不幸的是,显示器不是我想要的。
有人帮我解决了这个问题,我搜索了互联网,却一无所获。
提前致谢
信息:我对本出版物拍摄的第一张照片 :Link in UITextView not working in Swift 4
答案 0 :(得分:2)
似乎“。link”使用了UITextView的tintColor。尝试设置tintColor ...
答案 1 :(得分:0)
我让你的代码只需要很少的调整就可以了:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let basicAttributes : [NSAttributedStringKey : Any] = [
.font: UIFont.systemFont(ofSize: 18),
.foregroundColor: UIColor.black]
let linkAttributes : [NSAttributedStringKey : Any] = [
.link: URL(string: "https://www.stackoverflow.com")!,
.font:UIFont.boldSystemFont(ofSize: 18),
.foregroundColor: UIColor.blue]
let attributedString = NSMutableAttributedString(string: "Just click here to do stuff...", attributes: basicAttributes)
attributedString.addAttributes(linkAttributes, range: NSMakeRange(5, 10))
textView.attributedText = attributedString
}
您可能会注意到我为整个字符串设置了字体(这可能不是必需的,特别是如果您已经在XIB或故事板中设置了UITextView对象的字体),但我猜测真实的解决方案是使用addAttributes
,它将链接属性添加到属性字符串中的其他属性。