Ios 带有html超链接的UITextView或UILabel
我需要与多个磁带链接初始化文本。 在Android中,我只是使用了简单的html字符串 例如: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>" “所有者/” 只有当我点击相应的链接时,它才起作用 我花了一天时间,没
"<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)