【发布时间】:2020-05-02 08:34:21
【问题描述】:
我需要带有多个初始链接的文本。 在 Android 中,我只是使用了简单的 html 字符串 示例:
"<a href=\"https://www.link.com\">Photo</a> The owner / <a href=\"https://creativecommons.org/licenses/by-sa/3.0/deed.en\">CC BY-SA 3.0</a>"
只有当我点击单词对应的链接时它才有效。
我花了一天时间并没有设法找到简单的 ios 解决方案。 我尝试使用 UITextView 的扩展名:
extension UITextView {
func setHTMLFromString(text: String) {
let modifiedFont = NSString(format:"<span style=\"font-family: \(self.font!.fontName); font-size: \(self.font!.pointSize)\">%@</span>" as NSString, text)
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = .center
let attrStr = try! NSAttributedString(
data: modifiedFont.data(using: String.Encoding.unicode.rawValue, allowLossyConversion: true)!,
options: [NSAttributedString.DocumentReadingOptionKey.documentType:NSAttributedString.DocumentType.html, NSAttributedString.DocumentReadingOptionKey.characterEncoding: String.Encoding.utf8.rawValue],
documentAttributes: nil)
self.attributedText = attrStr
}
但是链接不仅在我点击超链接世界时有效,而且在我点击它们之间的简单文本时也有效。而且我也没有设法在 textView(center) 中对齐此文本。
有人知道正确的方法吗?
【问题讨论】:
-
我已经收集了很多关于这个主题的优秀答案,并在 GithHub 上创建了一个小 blob,集成和使用非常简单。我不想讲太多细节,因为在上面的答案中已经对它们进行了彻底的解释。我的解决方案是基于这些答案。 HyperlinkedUILabel
标签: ios hyperlink uitextview nsattributedstring