Skip to main content

Custom Loader (Activity Indicator) in Swift

Creating a custom activity indicator in Swift allows you to tailor the appearance and behavior of your loading spinner to fit the style of your app. Here's a step-by-step guide to creating a simple custom activity indicator using UIView Step 1: Create a New Swift File for the Custom Activity Indicator Create a new Swift file and name it  RotatingCirclesView.swift . Add the following code to define a custom UIView subclass for your activity indicator: // //   RotatingCirclesView.swift //   Welcome In // //   Created by Praveen Kumar on 05/09/24. // import UIKit class RotatingCirclesView : UIView {          let circle1 = UIView ( frame : CGRect ( x : 20 , y : 20 , width : 60 , height : 60 ))     let circle2 = UIView ( frame : CGRect ( x : 120 , y : 20 , width : 60 , height : 60 ))          let position : [ CGRect ] = [ CGRect ( x : 30 , y : 20 , width : 60 , height : 60 ), CGRect ( x : 60 , y : 15 ,...

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