Friday, 3 May 2019

Shared class iOS


import UIKit

class SharedClass: NSObject {

    static let sharedInstance = SharedClass()
    
    var transparentView:UIView?
    var spinner = UIActivityIndicatorView()
    
    
//    var url =  "Your url here
    
    let ver = "1.0"
    let noNetMsg = "No internet connection. Please connect."
    
//    //Show activity indicator
//    func activityIndicator(view:UIView) {
//
//        DispatchQueue.main.async {
////            if let window = UIApplication.shared.keyWindow {//Conditionally unwrap it instead of force unwrap
//
//                //let window = UIApplication.shared.keyWindow! //Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
//            self.transparentView = UIView()
//            self.transparentView?.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
//            self.transparentView?.backgroundColor = UIColor.black.withAlphaComponent(0.4)
//            view.addSubview(self.transparentView!)
//
//                if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad {
////                    self.spinner = UIActivityIndicatorView(style: .whiteLarge)
//                    self.spinner = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
//                    self.spinner.frame = CGRect(x: 0, y: 0, width: 60, height: 60)
//                } else {
////                    self.spinner = UIActivityIndicatorView(style: .white)
//                    self.spinner = UIActivityIndicatorView(activityIndicatorStyle: .white)
//                    self.spinner.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
//                }
//                self.spinner.center = view.center
//            self.transparentView?.addSubview(self.spinner)
//                self.spinner.startAnimating()
//
//                DispatchQueue.main.asyncAfter(deadline: .now() + 30.0) {//Stop spinner after 10 Sec's
//                    self.stopActivityIndicator()
//                }
//            }
////        }
//    }
    
    //Show activity indicator
    func activityIndicator(view:UIView) {
        
        DispatchQueue.main.async {
            if let window = UIApplication.shared.keyWindow {//Conditionally unwrap it instead of force unwrap
            
//                let window = UIApplication.shared.keyWindow! //Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
                self.transparentView = UIView()
                self.transparentView?.frame = CGRect(x: 0, y: 0, width: window.frame.width, height: window.frame.height)
                self.transparentView?.backgroundColor = UIColor.black.withAlphaComponent(0.4)
                window.addSubview(self.transparentView!)
                
                if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad {
                    //                    self.spinner = UIActivityIndicatorView(style: .whiteLarge)
                    self.spinner = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
                    self.spinner.frame = CGRect(x: 0, y: 0, width: 60, height: 60)
                } else {
                    //                    self.spinner = UIActivityIndicatorView(style: .white)
                    self.spinner = UIActivityIndicatorView(activityIndicatorStyle: .white)
                    self.spinner.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
                }
                self.spinner.center = view.center
                self.transparentView?.addSubview(self.spinner)
                self.spinner.startAnimating()
                
                DispatchQueue.main.asyncAfter(deadline: .now() + 30.0) {//Stop spinner after 10 Sec's
                    self.stopActivityIndicator()
                }
            }
        }
    }
    
    
    //Stop activity indicator
    func stopActivityIndicator() {
        DispatchQueue.main.async {
            self.spinner.stopAnimating()
            self.spinner.removeFromSuperview()
            self.transparentView?.removeFromSuperview()//Some times getting error here
        }
    }
    
    /*
    //Present alert on top of all windows
    func alertWindow(title: String, message: String) {
        //Calling
        //SharedClass.sharedInstance.alertWindow(title:"", message:"")
        DispatchQueue.main.async(execute: {
            let window = UIWindow(frame: UIScreen.main.bounds)
            window.rootViewController = UIViewController()
//            window.windowLevel = UIWindow.Level.alert + 1
            window.windowLevel = UIWindowLevelAlert+1
            
            let alert2 = UIAlertController(title: title, message: message, preferredStyle: .alert)
            let defaultAction2 = UIAlertAction(title: "OK", style: .default, handler: { action in
            })
            alert2.addAction(defaultAction2)
            
            window.makeKeyAndVisible()
            
            window.rootViewController?.present(alert2, animated: true, completion: nil)
        })
    }
    */
    
    //Email validation
    func isValidEmail(email: String) -> Bool {
        let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
        var valid = NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluate(with: email)
        if valid {
            valid = !email.contains("Invalid email id")
        }
        return valid
    }
   
    
    private override init() {
        
    }
    
}

//Alert function
extension UIViewController {
    func showAlert(title: String, msg: String) {
        DispatchQueue.main.async {
            let alert = UIAlertController(title: title, message: msg, preferredStyle: .alert)
            alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
            self.present(alert, animated: true, completion: nil)
        }
    }
}

//Set TF shadow in login VC
extension UITextField {
    func TFProperties() {
        layer.shadowColor = UIColor(red: 199/255, green: 217/255, blue: 223/255, alpha: 1.0).cgColor
        layer.shadowOpacity = 1
        layer.shadowOffset = CGSize.zero
        layer.shadowRadius = 5
        layer.borderColor = UIColor(red: 199/255, green: 217/255, blue: 223/255, alpha: 1.0).cgColor
        layer.borderWidth = 1
        layer.cornerRadius = 4
    }
}


No comments:

Post a Comment

Difference between == and ===

Difference between == and === https://stackoverflow.com/questions/24002819/difference-between-and == operator checks if their ...