Files
BilalKhanWDI bb68fa1e3c - Completed Apply Coupon Functionality
- 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
2024-07-24 19:59:08 +05:30

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
}
}
}