2016-12-06 3 views
0

UILabelでNSLinkAttributeNameの色をカスタマイズしたいと思います。しかし、NSForegroundColorAttributeNameを設定しても、リンクテキストの色には影響しません。UILabelでNSLinkAttributeNameの色をカスタマイズする

しかし、NSUnderlineColorAttributeNameが機能し、下線の色をカスタマイズすることができました。どういうわけかリンクテキストの色を変更することは可能ですか?

+0

関連にアクセスすることで、リンクを取得することができた。http://stackoverflow.com/questions/39926951/color-attribute-is-ignored-in -nsattributedstring-with-nslinkattributename – Moritz

答えて

3

UILabelをカスタマイズしようとしたときに同じ問題が発生しましたが、NSLinkAttributeNameNSForegroundColorAttributeNameよりも大きな優先度を持っています。または、おそらく、NSLinkAttributeNameがフォアグラウンドカラーの後で処理されます。

私はサイクルですべてNSLinkAttributeNameで終了し、それを私のカスタム属性の名前CustomLinkAttributeに置き換えました。その後、それは魅力のように動作します。そして、私はアップルから興味深い情報で、また私のカスタム属性

func setupHtmlLinkTextStyle(attributedString: NSAttributedString) -> NSAttributedString { 
    let updatedString = NSMutableAttributedString(attributedString: attributedString) 
    attributedString.enumerateAttribute(NSLinkAttributeName, 
             in: NSRange(location: 0, length: attributedString.length), 
             options: [], 
             using: 
     {(attribute, range, stop) in 
      if attribute != nil { 
       var attributes = updatedString.attributes(at: range.location, longestEffectiveRange: nil, in: range) 
       attributes[NSForegroundColorAttributeName] = UIColor.green 
       attributes[NSUnderlineColorAttributeName] = UIColor.green 
       attributes[NSStrokeColorAttributeName] = UIColor.green 
       attributes["CustomLinkAttribute"] = attribute! 
       attributes.removeValue(forKey: NSLinkAttributeName) 
       updatedString.setAttributes(attributes, range: range) 
      } 
    }) 
    return updatedString 
} 
関連する問題