调用方法:
var isTrue:Bool = false
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
isTrue = !isTrue
if isTrue {
SwiftNoticeDemo.wait()
}else{
SwiftNoticeDemo.clearAll()
}
}
SwiftNoticeDemo.swift
import Foundation
import UIKit
class SwiftNoticeDemo:NSObject {
static var windows = [UIWindow]()
@discardableResult
static func wait() -> UIWindow? {
let frame = CGRect(x: 0, y: 0, width: 80, height: 80)
let subView = UIApplication.shared.keyWindow?.subviews.first
let window = UIWindow()
window.backgroundColor = UIColor.purple
let mainView = UIView()
mainView.layer.cornerRadius = 12
// mainView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)
mainView.backgroundColor = UIColor.red
let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .white)
activityIndicatorView.frame = CGRect(x: 20, y: 20, width: 40, height: 40)
activityIndicatorView.startAnimating()
mainView.addSubview(activityIndicatorView)
window.frame = frame
mainView.frame = frame
window.center = subView!.center
window.windowLevel = UIWindowLevelAlert
window.isHidden = false
window.addSubview(mainView)
SwiftNoticeDemo.windows.append(window)
mainView.alpha = 0.0
UIView.animate(withDuration: 0.5) {
mainView.alpha = 1
}
return window
}
static func clearAll(){
SwiftNoticeDemo.windows.removeAll()
}
}