Ios 带有html超链接的UITextView或UILabel

Ios 带有html超链接的UITextView或UILabel,ios,hyperlink,uitextview,nsattributedstring,Ios,Hyperlink,Uitextview,Nsattributedstring,我需要与多个磁带链接初始化文本。 在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>" “所有者/” 只有当我点击相应的链接时,它才起作用 我花了一天时间,没

我需要与多个磁带链接初始化文本。 在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
}
扩展UITextView{ func setHTMLFromString(文本:字符串){ 让modifiedFont=NSString(格式:“%@”为NSString,文本) 让段落=NSMutableParagraphStyle() 段落对齐=.center 让attrStr=try!nsattributestring( 数据:modifiedFont.data(使用:String.Encoding.unicode.rawValue,allowLossyConversion:true)!, 选项:[NSAttributedString.DocumentReadingOptionKey.documentType:NSAttributedString.documentType.html,NSAttributedString.DocumentReadingOptionKey.characterEncoding:String.Encoding.utf8.rawValue], 文件属性:无) self.attributedText=attrStr } 但链接不仅在我点击超链接世界时有效,而且在我点击之间的简单文本时也有效。而且我没有在文本视图(中间)中对齐此文本


有人知道正确的方法吗?

目前找不到文档,但仔细观察表明:

因为用手指点击不像用鼠标指针点击那样精确,链接得到的“点击区域”比文本本身更大

以您的示例-“为所有者拍照/CC BY-SA 3.0”-我可以点击
ow
字符而不触发任何一个链接。如果我的点击处于
状态,则会触发照片链接,如果我的点击处于
新建/
状态,则会触发该链接


编辑

一个选项可以将文本居中

在您的分机中,更改

let modifiedFont = NSString(format:"<span style=\"font-family: \(self.font!.fontName); font-size: \(self.font!.pointSize)\">%@</span>" as NSString, text)
让modifiedFont=NSString(格式:“%@”为NSString,文本)

让modifiedFont=NSString(格式:“

%@

”作为NSString,文本)

添加
感谢您的回答。也许您知道如何对齐(居中)在我的扩展中?@Dima-很高兴它对你有用。为了让其他人看到你的问题,如果这个问题回答了,你应该将答案标记为接受。我收集了很多关于这个主题的优秀答案,并在GithHub上创建了一个小blob,它很容易集成和使用。我不想太多细节,因为这就是全部以上答案已详细解释。我的解决方案基于这些答案。
let modifiedFont = NSString(format:"<p style=\"text-align:center\"><span style=\"font-family: \(self.font!.fontName); font-size: \(self.font!.pointSize)\">%@</span></p>" as NSString, text)