- Made a selection for the coupon selected, also added no coupon found when coupon is not there - Added Masila view in more section - Added Play trailer from Manila in more section - Gave other connectivity
115 lines
4.2 KiB
Swift
115 lines
4.2 KiB
Swift
//
|
|
// LLSpinner.swift
|
|
// WOKA
|
|
//
|
|
// Created by MacBook Pro on 06/05/24.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
open class LLSpinner {
|
|
|
|
// Spinner view
|
|
internal static var spinnerView: UIActivityIndicatorView?
|
|
// Background view behind spinner
|
|
internal static var backgroundView: UIView?
|
|
// Background view covering entire frame
|
|
internal static var frameTintView: UIView?
|
|
// Label to display text
|
|
internal static var label: UILabel?
|
|
|
|
// Default spinner style and background color
|
|
public static var style: UIActivityIndicatorView.Style = .large
|
|
public static var backgroundColor: UIColor = UIColor.black.withAlphaComponent(0.3)
|
|
|
|
// Touch handler closure
|
|
internal static var touchHandler: (() -> Void)?
|
|
|
|
// Function to show spinner
|
|
public static func spin(style: UIActivityIndicatorView.Style = style,
|
|
backgroundColor: UIColor = backgroundColor,
|
|
text: String? = nil,
|
|
touchHandler: (() -> Void)? = nil) {
|
|
if spinnerView == nil,
|
|
let window = UIApplication.shared.mainKeyWindow {
|
|
let frame = UIScreen.main.bounds
|
|
|
|
// Add background view covering entire frame
|
|
frameTintView = UIView(frame: frame)
|
|
frameTintView?.center = CGPoint(x: window.frame.size.width / 2,
|
|
y: window.frame.size.height / 2)
|
|
frameTintView?.backgroundColor = backgroundColor
|
|
frameTintView?.layer.cornerRadius = 10
|
|
window.addSubview(frameTintView!)
|
|
|
|
// Add background view behind spinner
|
|
backgroundView = UIView(frame: CGRect(x: 0, y: 0, width: 180, height: 120))
|
|
backgroundView?.center = CGPoint(x: window.frame.size.width / 2,
|
|
y: window.frame.size.height / 2 - 20) // Adjust vertical position
|
|
backgroundView?.backgroundColor = .white
|
|
backgroundView?.layer.cornerRadius = 10
|
|
window.addSubview(backgroundView!)
|
|
|
|
// Create and add spinner view
|
|
spinnerView = UIActivityIndicatorView(style: style)
|
|
spinnerView!.center = CGPoint(x: backgroundView!.center.x,
|
|
y: backgroundView!.center.y - 10) // Move spinner up
|
|
spinnerView!.color = UIColor.appColor(.TextDarkBlue)!
|
|
window.addSubview(spinnerView!)
|
|
spinnerView!.startAnimating()
|
|
|
|
// Add label if text is provided
|
|
if let text = text {
|
|
label = UILabel(frame: CGRect(x: 0, y: spinnerView!.frame.maxY + 10, width: window.frame.size.width, height: 20))
|
|
label?.font = FontCustom().customFont(fontName: .Exo2_Bold, size: 16)
|
|
label?.textColor = UIColor.appColor(.TextDarkBlue)
|
|
label?.text = text
|
|
label?.textAlignment = .center
|
|
window.addSubview(label!)
|
|
}
|
|
}
|
|
|
|
// Attach touch handler if provided
|
|
if touchHandler != nil {
|
|
self.touchHandler = touchHandler
|
|
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(runTouchHandler))
|
|
spinnerView!.addGestureRecognizer(tapGestureRecognizer)
|
|
}
|
|
}
|
|
|
|
// Run touch handler
|
|
@objc internal static func runTouchHandler() {
|
|
if touchHandler != nil {
|
|
touchHandler!()
|
|
}
|
|
}
|
|
|
|
// Function to stop spinner
|
|
public static func stop() {
|
|
// Remove spinner view
|
|
if let _ = spinnerView {
|
|
spinnerView!.stopAnimating()
|
|
spinnerView!.removeFromSuperview()
|
|
spinnerView = nil
|
|
}
|
|
|
|
// Remove background view behind spinner
|
|
if let _ = backgroundView {
|
|
backgroundView!.removeFromSuperview()
|
|
backgroundView = nil
|
|
}
|
|
|
|
// Remove label
|
|
if let _ = label {
|
|
label!.removeFromSuperview()
|
|
label = nil
|
|
}
|
|
|
|
// Remove background view covering entire frame
|
|
if let _ = frameTintView {
|
|
frameTintView!.removeFromSuperview()
|
|
frameTintView = nil
|
|
}
|
|
}
|
|
}
|