UILabelでNSLinkAttributeName
の色をカスタマイズしたいと思います。しかし、NSForegroundColorAttributeName
を設定しても、リンクテキストの色には影響しません。UILabelでNSLinkAttributeNameの色をカスタマイズする
しかし、NSUnderlineColorAttributeName
が機能し、下線の色をカスタマイズすることができました。どういうわけかリンクテキストの色を変更することは可能ですか?
UILabelでNSLinkAttributeName
の色をカスタマイズしたいと思います。しかし、NSForegroundColorAttributeName
を設定しても、リンクテキストの色には影響しません。UILabelでNSLinkAttributeNameの色をカスタマイズする
しかし、NSUnderlineColorAttributeName
が機能し、下線の色をカスタマイズすることができました。どういうわけかリンクテキストの色を変更することは可能ですか?
UILabelをカスタマイズしようとしたときに同じ問題が発生しましたが、NSLinkAttributeName
はNSForegroundColorAttributeName
よりも大きな優先度を持っています。または、おそらく、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
}
関連にアクセスすることで、リンクを取得することができた。http://stackoverflow.com/questions/39926951/color-attribute-is-ignored-in -nsattributedstring-with-nslinkattributename – Moritz