文章目录
1.自己写的框架类,顶部截图是使用举例
1.1 框架类:LoadingView
//
// LoadingView.swift
// Fei
//
// Created by mcvivi on 2022/3/31.
//
import UIKit
extension UIWindow
{
class var window:UIWindow{
let window = UIApplication.shared.windows.last!
if(!window.isHidden){
return window;
}
return (UIApplication.shared.delegate?.window!)!;
}
}
extension LoadingView{
class func show(){
let window = UIWindow.window
shared.loadingView.center = window.center
window.addSubview(shared.loadingView)
shared.label.text = "加载中..."
shared.activity.startAnimating()
shared.loadingView.alpha = 0
UIView.animate(withDuration: 0.3) {
shared.loadingView.alpha = 1
}
}
class func complete(){
shared.label.text = "完成"
shared.activity.stopAnimating()
DispatchQueue.main.asyncAfter(deadline: .now()+1, execute:
{
UIView.animate(withDuration: 0.3) {
shared.loadingView.alpha = 0
} completion: {
(bool) in
printXY(bool, obj: self, line: #line)
shared.loadingView.removeFromSuperview()
}
})
}
}
class LoadingView: NSObject {
fileprivate static let shared:LoadingView = LoadingView()
fileprivate lazy var loadingView:UIView = {
let lView = UIView()
lView.frame.size = CGSize(width: 100, height: 100)
lView.layer.cornerRadius = 10
lView.layer.masksToBounds = true
lView.backgroundColor = .gray
lView.addSubview(imageView)
lView.addSubview(activity)
lView.addSubview(label)
return lView
}()
fileprivate lazy var label:UILabel = {
let label = UILabel(frame: CGRect(x: 0, y: 70, width: 100, height: 20))
label.textAlignment = .center
label.textColor = .white
label.text = "加载中..."
return label
}()
fileprivate lazy var activity:UIActivityIndicatorView = {
let activity = UIActivityIndicatorView(style: .whiteLarge)
activity.frame = CGRect(x: 25, y: 10, width: 50, height: 50)
activity.backgroundColor = .gray
activity.startAnimating()
return activity
}()
fileprivate lazy var imageView:UIImageView = {
let imageView = UIImageView(image: UIImage(named: "complete"))
imageView.frame = CGRect(x: 25, y: 10, width: 50, height: 50)
return imageView
}()
}
1.2 使用:LoadingVC.swift
- 显示
LoadingView.show()
- 隐藏
LoadingView.complete()
- LoadingVC.swift
//
// LoadingVC.swift
// Fe
//
// Created by macvi on 2022/3/31.
//
import UIKit
class LoadingVC: UIViewController {
lazy var btnShow:UIButton = {
let btn = UIButton(frame: CGRect(x: 50, y: 50, width: 140, height: 40))
btn.setTitle("show", for: .normal)
btn.backgroundColor = .gray
btn.addTarget(self, action: #selector(btnShowClick), for: .touchUpInside)
return btn
}()
@objc func btnShowClick(){
LoadingView.show()
}
lazy var btnComplete:UIButton = {
let btn = UIButton(frame: CGRect(x: 100, y: 150, width: 140, height: 40))
btn.setTitle("complete", for: .normal)
btn.backgroundColor = .gray
btn.addTarget(self, action: #selector(btnCompleteClick), for: .touchUpInside)
return btn
}()
@objc func btnCompleteClick(){
LoadingView.complete()
}
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
view.addSubview(btnShow)
view.addSubview(btnComplete)
}
}