Property in Swift - Computed property | Property Observers (WillSet & DidSet)

   Computed property -  Computed properties are part of a property type in Swift.  Stored properties are the most common which save and return a stored value  Computed properties calculate (rather than store) a value. A computed property provides a getter and an optional setter to indirectly access other properties and values. Computed property in swift is an interesting topic as you can write code inside a property in swift. Computed properties are provided by classes, structures, and enumerations but stored properties are provided only by classes and structures. This computed property swift tutorial has some tips on how to use the computed property in the right way and avoid the common mistakes that swift programming beginners do while computed property. Example :- Computed property A Calculate Simple Intrest struct CalculateLoan {      var amount : Int      var rate : Int      var years : Int      var simpleInterest: Int {          get {              return ( amount * rate

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