Skip to main content

Display HTML Code in UITextView and UILabel iOS in Swift 5

 

 How To Perfect Display HTML Code in UITextView and UILabel iOS in Swift 5

UITextView supports the display of text using custom style information and also supports text editing. 

You typically use a text view to display multiple lines of text, such as when displaying the body of a large text document. This class supports multiple text styles through use of the attributedText property.

This class supports multiple text styles through use of the attributedText property. (Styled text isn’t supported in versions of iOS earlier than iOS 6.) Setting a value for this property causes the text view to use the style information provided in the attributed string. You can still use the font, textColor, and textAlignment properties to set style attributes, but those properties apply to all of the text in the text view. It’s recommended that you use a text view—and not a UIWebView object—to display both plain and rich text in your app.


Display HTML Code in UITextView

#Extension

extension String {

    

    public var convertHtmlToNSAttributedStr: NSAttributedString? {

        guard let data = data(using: .utf8) else {

            return nil

        }

        do {

            return try NSAttributedString(data: data,options: [.documentType: NSAttributedString.DocumentType.html,.characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)

        }

        catch {

            print(error.localizedDescription)

            return nil

        }

    }


//#Convert to NSAttributedString


  public func convertHtmlToAttributedWithCSS(font: UIFont? , csscolor: String , lineheight: Int, csstextalign: String) -> NSAttributedString? {

        guard let font = font else {

            return convertHtmlToNSAttributedStr

        }

        let modifiedString = "<style>body{font-family: '\(font.fontName)'; font-size:\(font.pointSize)px; color: \(csscolor); line-height: \(lineheight)px; text-align: \(csstextalign); }</style>\(self)";

        guard let data = modifiedString.data(using: .utf8) else {

            return nil

        }

        do {

            return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)

        }

        catch {

            print(error)

            return nil

        }

    }

}



let textStr = """


        <!DOCTYPE html>

        <html>

        <head>

        <style>


        table {

         font-family: arial, sans-serif;

          border-collapse: collapse;

          width: 100%;

        }

        td, th {

          border: 1px solid #dddddd;

          text-align: left;

          padding: 8px;

        }

        tr:nth-child(even) {

         background-color: #dddddd;

        }

        </style>

        </head>

        <body>

        <h2>HTML Table</h2>

        <table>

          <tr>

            <th>Company</th>

            <th>Contact</th>

            <th>Country</th>

          </tr>

          <tr>

            <td>Alfreds Futterkiste</td>

            <td>Maria Anders</td>

            <td>Germany</td>

          </tr>

          <tr>

            <td>Centro comercial Moctezuma</td>

            <td>Francisco Chang</td>

            <td>Mexico</td>

          </tr>

          <tr>

            <td>Ernst Handel</td>

            <td>Roland Mendel</td>

            <td>Austria</td>

          </tr>

          <tr>

            <td>Island Trading</td>

            <td>Helen Bennett</td>

            <td>UK</td>

          </tr>

          <tr>

            <td>Laughing Bacchus Winecellars</td>

            <td>Yoshi Tannamuri</td>

            <td>Canada</td>

          </tr>

          <tr>

            <td>Magazzini Alimentari Riuniti</td>

            <td>Giovanni Rovelli</td>

            <td>Italy</td>

          </tr>

        </table>

        </body>

        </html>


        """


self.bookingPlyText.attributedText = textStr.convertHtmlToAttributedWithCSS(fontmediumWithSize(pointSize: 14), csscolor: "black", lineheight: 5, csstextalign: "left")



Custom Font


func mediumWithSize(pointSize: CGFloat)-> UIFont {

        return UIFont.init(name: "Hallo sans", size: CGFloat(pointSize))!

    }

Comments

Popular posts from this blog

Add a Scene Delegate to your existing project with Storyboard in Swift

To add a scene delegate, first, create a new Swift file that you’ll call "SceneDelegate" containing a subclass of UIResponder, just like the AppDelegate, and that conforms to UIWindowSceneDelegate.  As your app might supports other versions than iOS 13, make this class only available for iOS 13. This is what you should have : If you are working a project that is storyboard based, please set storyboard  initial view controller SceneDelegate.swift import UIKit @available ( iOS 13.0 , *) class SceneDelegate : UIResponder , UIWindowSceneDelegate {     var window : UIWindow ?     func scene ( _ scene: UIScene , willConnectTo session: UISceneSession , options connectionOptions: UIScene . ConnectionOptions ) {                  let storyboard = UIStoryboard (name: "Main" , bundle: nil )         let initialViewController = storyboard. instantiateViewController (withIdentifier: "ViewController" )         let mainNavigationController = UINavigationControlle

How Create Animated Circle Progress Bar iOS 11 Swift 4

  Animated Circle Progress Bar iOS 11 Swift 4 With MBCircularProgressBa r - https://github.com/MatiBot/MBCircularProgressBar A circular, animatable & highly customizable progress bar from the Interface Builder Swift, Using pod fite MBCircularProgressBar Installation Cocoapods terminal. pod "MBCircularProgressBar" That - A Simple Steps to installed pod file -        Open terminal        Command on terminal go to project folder Cd path        set your project path on terminal.        command : pod init        open pod file - open -e podfile        added in pod file with in : pod "MBCircularProgressBar"        Command : Pod install        Close project of Xcode        open your Project from terminals        Command : open PodDemos.xcworkspace After opern StoryBoard and Now drag a UIView over the viewController in storyboard Or set UIView Constraint width, height or verticle or horzentail space and set a class MBCircul

How to Use Multiple Sections in UITableView iOS Swift !

Multiple sections in UITableView iOS Swift. UITableView is very important part of iOS ecosystem. So we split tableviews in sections. Then its easier to find right information.  1. First let’s create a project as usual. Create a new single view application X code project. Set project name to UIViewController.  2. Go to main storyboard & select view controller & use UITableView 3. Select tableview & make it initial view controller  4 Create a custom Sections Class like Name => TableSections, create register cell static return “ getCellNibs ” method. Then create  4 section enum “TableItems” then after append all sections to an array model. import UIKit struct CellNib {      static func getCellNibs () -> [ String ] {          return [ "Cell1" , "Cell2" , "Cell3" , "Cell4" ]     } } enum TableItems : Int {      case TableSections1      case TableSections2      case TableSections3      case TableSections4 } class TableSec