HTML Format in UITextView

前端 未结 8 976
轻奢々
轻奢々 2020-12-01 07:19

i\'m quite new to iOS Development and right now working on an app which receive some kind of JSON Data. But some Backend Experts thought, that it would be better for the Use

相关标签:
8条回答
  • 2020-12-01 07:26

    I used code for Swift 4:

    var descriptionStr : String = String() //Dynamic text
    
    let regex = try! NSRegularExpression(pattern: "<.*?>", options: [.caseInsensitive])
            let range = NSRange(location: 0, length: descriptionStr.count)
            let htmlLessString: String = regex.stringByReplacingMatches(in: descriptionStr, options: NSRegularExpression.MatchingOptions(), range:range, withTemplate: "")
            textViewRef.text = htmlLessString
    
    0 讨论(0)
  • 2020-12-01 07:26

    Having created your attributed string, you would then set the attributedText property of the UITextView to be the NSAttributedString itself, not the string property of that attributed string.

    0 讨论(0)
  • 2020-12-01 07:27

    I would recommend displaying HTML in a UIWebView. It is more robust than using a UITextView. See Display html text in uitextview for more information.

    0 讨论(0)
  • 2020-12-01 07:32

    Your versions is pretty close to begin with. As Leonardo Savio Dabus stated you should probably try NSUTF*StringEncoding. The following produces your expected output for me. As he said, you might want to add it to an extension of string, if you are doing this a lot.

        let theString = "F&uuml;r mehr Informationen klicken sie <a href=\"http://www.samplelink.com/subpage.php?id=8\">here</a>."
        let theAttributedString = NSAttributedString(data: str.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!,
                                                     options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil, error: nil)
        theTextView.attributedText = atString
    
    0 讨论(0)
  • 2020-12-01 07:34

    The problem there is that you have to change the Character Encoding options from NSUnicodeStringEncoding to NSUTF8StringEncoding to load your of your html the proper way. I think you should create a string extension read-only computed property to convert your html code to attributed string:

    Xcode 8.3.1 • Swift 3.1

    extension Data {
        var attributedString: NSAttributedString? {
            do {
                return try NSAttributedString(data: self, options:[NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue], documentAttributes: nil)
            } catch {
                print(error)
            }
            return nil
        }
    }
    extension String {
        var data: Data {
            return Data(utf8)
        }
    }
    

    let htmlStringCode = "F&uuml;r mehr Informationen klicken sie <a href=\"http://www.samplelink.com/subpage.php?id=8\">here</a>"
    
    htmlStringCode.data.attributedString?.string ?? ""  // "Für mehr Informationen klicken sie here"
    

    in your case

    yourTextView.attributedText = htmlStringCode.data.attributedString
    
    0 讨论(0)
  • 2020-12-01 07:34

    Another way I used to do this :

    var someHtmlString = "F&uuml;r mehr Informationen klicken sie <a href=\"http://www.samplelink.com/subpage.php?id=8\">here</a>."
    let regex = try! NSRegularExpression(pattern: "<.*?>", options: [.CaseInsensitive])
    let range = NSRange(location: 0, length: someHtmlString.characters.count)
    let htmlLessString: String = regex.stringByReplacingMatchesInString(someHtmlString, options: NSMatchingOptions(), range:range, withTemplate: "")
    

    End result -> htmlLessString is

    "F&uuml;r mehr Informationen klicken sie here."
    
    0 讨论(0)
提交回复
热议问题