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

How to Change App Multiple Language - localization at runtime in swift



Then App Open Default Language -

Add Source code  - AppDelegate

@UIApplicationMain


class AppDelegate: UIResponder, UIApplicationDelegate {



let currentLanguage = "pt-PT"



func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

UserDefaults.standard.set(currentLanguage, forKey: "AppleLanguage")

Bundle.swizzleLocalization()

return true

}

}



extension Bundle {

static func swizzleLocalization() {

let orginalSelector = #selector(localizedString(forKey:value:table:))

guard let orginalMethod = class_getInstanceMethod(self, orginalSelector) else { return }



let mySelector = #selector(myLocaLizedString(forKey:value:table:))

guard let myMethod = class_getInstanceMethod(self, mySelector) else { return }



if class_addMethod(self, orginalSelector, method_getImplementation(myMethod), method_getTypeEncoding(myMethod)) {

class_replaceMethod(self, mySelector, method_getImplementation(orginalMethod), method_getTypeEncoding(orginalMethod))

} else {

method_exchangeImplementations(orginalMethod, myMethod)

}

}



@objc private func myLocaLizedString(forKey key: String,value: String?, table: String?) -> String {

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate,

let bundlePath = Bundle.main.path(forResource: appDelegate.currentLanguage, ofType: "lproj"),

let bundle = Bundle(path: bundlePath) else {

return Bundle.main.myLocaLizedString(forKey: key, value: value, table: table)

}

return bundle.myLocaLizedString(forKey: key, value: value, table: table)

}




Let’s get started by choosing languages 😄


Comments

Post a Comment