|
@@ -0,0 +1,98 @@
|
|
|
+//
|
|
|
+// BFLoadingView.swift
|
|
|
+// BFRecordScreenKit
|
|
|
+//
|
|
|
+// Created by ak on 2022/2/17.
|
|
|
+//
|
|
|
+
|
|
|
+import BFCommonKit
|
|
|
+import BFUIKit
|
|
|
+import Kingfisher
|
|
|
+import UIKit
|
|
|
+
|
|
|
+class BFLoadingView: UIView {
|
|
|
+ var cancelHandle: ((_ sender: UIButton) -> Void)?
|
|
|
+
|
|
|
+ // gif每一帧图
|
|
|
+ public var gifImages: [UIImage]?
|
|
|
+ // gif播放时长
|
|
|
+ public var duration: Double?
|
|
|
+
|
|
|
+ public lazy var loadingImage: UIImageView = {
|
|
|
+ let loadingImage = UIImageView()
|
|
|
+ loadingImage.tintColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
|
|
|
+ return loadingImage
|
|
|
+ }()
|
|
|
+
|
|
|
+ lazy var closedBtn: UIButton = {
|
|
|
+ let closedBtn = UIButton(type: .custom)
|
|
|
+ closedBtn.frame = CGRect(x: 13, y: 43, width: cDefaultMargin * 3, height: cDefaultMargin * 3)
|
|
|
+ closedBtn.setImage(imageInRecordScreenKit(by: "LoadingClose"), for: .normal)
|
|
|
+ closedBtn.addTarget(self, action: #selector(removeView), for: .touchUpInside)
|
|
|
+ return closedBtn
|
|
|
+ }()
|
|
|
+
|
|
|
+ lazy var titleL: UILabel = {
|
|
|
+ let l = UILabel()
|
|
|
+ l.text = "变音中 10%"
|
|
|
+ l.textAlignment = .center
|
|
|
+ l.textColor = UIColor.hexColor(hexadecimal: "#389AFF")
|
|
|
+ l.font = UIFont.systemFont(ofSize: 16)
|
|
|
+
|
|
|
+ return l
|
|
|
+ }()
|
|
|
+
|
|
|
+ override init(frame: CGRect) {
|
|
|
+ super.init(frame: frame)
|
|
|
+ backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.7)
|
|
|
+ addSubview(loadingImage)
|
|
|
+ addSubview(closedBtn)
|
|
|
+ addSubview(titleL)
|
|
|
+
|
|
|
+ let data = try? Data(contentsOf: URL(fileURLWithPath: currentBundle()!.path(forResource: "stuckPoint_edit_loading", ofType: ".gif")!))
|
|
|
+ if data != nil {
|
|
|
+ PQPHAssetVideoParaseUtil.parasGIFImage(data: data!, isRenderingColor: UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)) { [weak self] _, images, duration in
|
|
|
+ self?.gifImages = images
|
|
|
+ self?.duration = duration
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ required init?(coder _: NSCoder) {
|
|
|
+ fatalError("init(coder:) has not been implemented")
|
|
|
+ }
|
|
|
+
|
|
|
+ override func layoutSubviews() {
|
|
|
+ super.layoutSubviews()
|
|
|
+ // 334 * 307
|
|
|
+ let imageW: CGFloat = 90
|
|
|
+ let imageH: CGFloat = 90
|
|
|
+ loadingImage.frame = CGRect(x: (frame.width - imageW) / 2, y: (frame.height - imageW) / 2, width: imageW, height: imageH)
|
|
|
+
|
|
|
+ titleL.frame = CGRect(x: (cScreenWidth - 88) / 2, y: loadingImage.frame.maxY + 10, width: 88, height: 22)
|
|
|
+ }
|
|
|
+
|
|
|
+ /// 开始加载
|
|
|
+ public func loading() {
|
|
|
+ if loadingImage.superview == nil {
|
|
|
+ addSubview(loadingImage)
|
|
|
+ }
|
|
|
+ isHidden = false
|
|
|
+ loadingImage.displayGIF(data: nil, images: gifImages, repeatCount: .max, duration: duration ?? 2)
|
|
|
+ }
|
|
|
+
|
|
|
+ /// 停止加载
|
|
|
+ public func endLoading() {
|
|
|
+ loadingImage.removePlayGIF()
|
|
|
+ }
|
|
|
+
|
|
|
+ @objc public func removeView() {
|
|
|
+ loadingImage.removePlayGIF()
|
|
|
+ loadingImage.removeFromSuperview()
|
|
|
+ removeFromSuperview()
|
|
|
+ }
|
|
|
+
|
|
|
+ deinit {
|
|
|
+ BFLog(message: "销毁加载中视图")
|
|
|
+ }
|
|
|
+}
|