54 lines
1.3 KiB
Swift
54 lines
1.3 KiB
Swift
//
|
|
// GlobalLoadingOverlayView.swift
|
|
// suixinkan
|
|
//
|
|
|
|
import SnapKit
|
|
import UIKit
|
|
|
|
/// 全局 Loading 遮罩,对齐 Android `LoadingScrim` 样式。
|
|
final class GlobalLoadingOverlayView: UIView {
|
|
|
|
private let cardView = UIView()
|
|
private let loadingView = LottieLoadingView()
|
|
|
|
override init(frame: CGRect) {
|
|
super.init(frame: frame)
|
|
backgroundColor = UIColor.black.withAlphaComponent(0.2)
|
|
isUserInteractionEnabled = true
|
|
|
|
cardView.backgroundColor = .white
|
|
cardView.layer.cornerRadius = 15
|
|
cardView.clipsToBounds = true
|
|
|
|
addSubview(cardView)
|
|
cardView.addSubview(loadingView)
|
|
|
|
cardView.snp.makeConstraints { make in
|
|
make.center.equalToSuperview()
|
|
make.width.height.equalTo(100)
|
|
}
|
|
loadingView.snp.makeConstraints { make in
|
|
make.center.equalToSuperview()
|
|
make.width.height.equalTo(80)
|
|
}
|
|
}
|
|
|
|
@available(*, unavailable)
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
/// 显示并开始动画。
|
|
func present() {
|
|
isHidden = false
|
|
loadingView.startAnimating()
|
|
}
|
|
|
|
/// 隐藏并停止动画。
|
|
func dismiss() {
|
|
loadingView.stopAnimating()
|
|
isHidden = true
|
|
}
|
|
}
|