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 , width : 70 , height : 70 ), CGRect ( x : 110 , y : 20 , width : 60 , heigh

One Line JSON Parsing Swift 4 Simple Example


 One Line Parsing JSON in Swift 4.0 With Codable or Decodle

 Swift 4 includes a new way to generate and parse JSON with Swift Codable protocol.


 JSON:-
{
"name" = Rahul'
"id" = 10
"collage" = RTS Collage
"code" = A190
}
 Start:-
 import UIKit
struct  Profile: Codable {
let name: String
let id: Int
let  collage: String
let code: String

 Convert Item(Profile) to JSON
 init?(json: [String: Any]){
 guard let name = json["name" ] as?  String,
           let id= json["id" ] as?  Int,
           let collage= json["collage"  ]as?  String,
           let code= json["code" ] as?  String, else { return nil}
 self.name = name
self.id = id
self.collage = collage
self.code = code
}
}
class ViewController: UIViewController {
  guard let url = URL(string: "https://xxxxxxxxxx") else {return}
  URLSession.shared.dataTask(with: url) { (data, response  , error) in   
   guard let data = data else {return}
    do{
           let decoder = try JSONDecoder().decoder(Profile.self, from: data)
 // check access data......
         print(decoder.name)         
     } catch let err{
        print("Err", err)
     }
   }.resume()
}


Comments