UITextView:链接属性的foregroundColor不会改变(NSAttributedStringKey)

时间:2018-04-03 20:39:18

标签: swift xcode textview swift4 nsattributedstring

我遇到NSAttributedStringKey和UITextView

的问题

事实上,我正在尝试这样做:

enter image description here

这是理论上应该起作用的代码

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

但此代码显示此

enter image description here

所以我尝试通过添加两行额外的代码来解决问题:

 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
           ] ;

不幸的是,显示器不是我想要的。

enter image description here

有人帮我解决了这个问题,我搜索了互联网,却一无所获。

提前致谢

  

信息:我对本出版物拍摄的第一张照片   :Link in UITextView not working in Swift 4

2 个答案:

答案 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,它将链接属性添加到属性字符串中的其他属性。