浏览代码

设置公开方法

jsonwang 3 年之前
父节点
当前提交
50e649e00b
共有 1 个文件被更改,包括 149 次插入8 次删除
  1. 149 8
      BFFramework/Classes/Base/View/PQRemindView.swift

+ 149 - 8
BFFramework/Classes/Base/View/PQRemindView.swift

@@ -24,14 +24,14 @@ public class PQRemindView: UIView {
 
     public var remindBlock: ((_ sender: UIButton, _ remindData: PQBaseModel?) -> Void)?
 
-    lazy var contentView: UIView = {
+    lazy public var contentView: UIView = {
         let contentView = UIView()
         contentView.backgroundColor = UIColor.white
         contentView.addCorner(corner: 4)
         return contentView
     }()
 
-    lazy var titleLab: UILabel = {
+    lazy public var titleLab: UILabel = {
         let titleLab = UILabel()
         titleLab.font = UIFont.systemFont(ofSize: 18, weight: .medium)
         titleLab.textAlignment = .center
@@ -40,7 +40,7 @@ public class PQRemindView: UIView {
         return titleLab
     }()
 
-    lazy var contentLab: UILabel = {
+    lazy public var contentLab: UILabel = {
         //        let contentLab = TYAttributedLabel.init()
         //        contentLab.textAlignment = CTTextAlignment.center
         //        contentLab.verticalAlignment = .center
@@ -56,7 +56,7 @@ public class PQRemindView: UIView {
         return contentLab
     }()
 
-    lazy var cancelBtn: UIButton = {
+    lazy public var cancelBtn: UIButton = {
         let cancelBtn = UIButton(type: .custom)
         cancelBtn.setTitle("取消", for: .normal)
         cancelBtn.setTitleColor(UIColor.black, for: .normal)
@@ -66,7 +66,7 @@ public class PQRemindView: UIView {
         return cancelBtn
     }()
 
-    lazy var confirmBtn: UIButton = {
+    lazy public var confirmBtn: UIButton = {
         let confirmBtn = UIButton(type: .custom)
         confirmBtn.setTitle("确定", for: .normal)
         confirmBtn.setTitleColor(UIColor.black, for: .normal)
@@ -76,13 +76,13 @@ public class PQRemindView: UIView {
         return confirmBtn
     }()
 
-    lazy var verticalLine: UIView = {
+    lazy public var verticalLine: UIView = {
         let verticalLine = UIView()
         verticalLine.backgroundColor = UIColor.hexColor(hexadecimal: "#E5E5E5")
         return verticalLine
     }()
 
-    lazy var horizonLine: UIView = {
+    lazy public var horizonLine: UIView = {
         let horizonLine = UIView()
         horizonLine.backgroundColor = UIColor.hexColor(hexadecimal: "#E5E5E5")
         return horizonLine
@@ -122,7 +122,7 @@ public class PQRemindView: UIView {
         }
     }
 
-    func addLayout() {
+   public func addLayout() {
         var summH: CGFloat = 0
         var titleH: CGFloat = 0
         if (remindData?.summary?.count ?? 0) > 0 {
@@ -372,3 +372,144 @@ extension PQEmptyRemindView {
 
     func removeShimmeringView() {}
 }
+
+// MARK: - 上传提示框
+
+/// 上传提示框
+public class PQUploadRemindView: PQRemindView {
+    public var canMoreOpration: Bool = false // 是否还有更多操作
+    public var confirmTitle: String = "我知道了"
+    public var cancelTitle: String = "取消"
+    public var cacelColor: UIColor = UIColor.hexColor(hexadecimal: "#666666")
+    public var attributedTitle: NSAttributedString?
+
+    override public func addData() {
+        titleLab.textAlignment = .center
+        if attributedTitle != nil {
+            titleLab.attributedText = attributedTitle
+        } else {
+            titleLab.text = remindData?.title
+        }
+        if remindData?.attributedTitle != nil {
+            contentLab.attributedText = remindData?.attributedTitle
+        } else {
+            contentLab.text = remindData?.summary
+        }
+        cancelBtn.setTitleColor(cacelColor, for: .normal)
+        confirmBtn.setTitleColor(UIColor.hexColor(hexadecimal: "#EE0051"), for: .normal)
+        confirmBtn.setTitle(confirmTitle, for: .normal)
+        cancelBtn.setTitle(cancelTitle, for: .normal)
+        let ges = UITapGestureRecognizer(target: self, action: #selector(removeView))
+        addGestureRecognizer(ges)
+    }
+
+    override public func addLayout() {
+        let titleH: CGFloat = ((remindData?.title != nil && (remindData?.title?.count ?? 0) > 0) || attributedTitle != nil) ? cDefaultMargin * 2 : 0
+
+        let summH: CGFloat = sizeTextFits(attributedText: remindData?.attributedTitle != nil ? remindData?.attributedTitle : NSMutableAttributedString(string: remindData?.summary ?? ""), text: nil, numberOfLines: 0, font: UIFont.systemFont(ofSize: 14), maxSize: CGSize(width: cScreenWidth - cDefaultMargin * 12, height: CGFloat.greatestFiniteMagnitude)).height + cDefaultMargin
+
+        let contentH: CGFloat = (titleH == 0 ? 0 : cDefaultMargin * 3) + cDefaultMargin * 2 + summH + cDefaultMargin + cDefaultMargin * 5
+
+        contentView.snp.makeConstraints { make in
+            make.left.equalTo(self).offset(cDefaultMargin * 3)
+            make.right.equalTo(self).offset(-cDefaultMargin * 3)
+            make.height.equalTo(contentH)
+            make.center.equalTo(self)
+        }
+        titleLab.snp.makeConstraints { make in
+            make.left.equalTo(contentView).offset(cDefaultMargin * 2)
+            make.right.equalTo(contentView).offset(-cDefaultMargin * 2)
+            make.height.equalTo(titleH)
+            make.top.equalTo(contentView).offset(titleH == 0 ? 0 : cDefaultMargin * 2)
+        }
+        contentLab.snp.makeConstraints { make in
+            make.top.equalTo(titleLab.snp_bottom).offset(cDefaultMargin)
+            make.left.right.equalTo(titleLab)
+            make.height.equalTo(summH)
+        }
+        if canMoreOpration {
+            let btnW: CGFloat = (cScreenWidth - 1 - cDefaultMargin * 8) / 2
+            verticalLine.snp.makeConstraints { make in
+                make.top.equalTo(contentLab.snp_bottom).offset(cDefaultMargin)
+                make.height.equalTo(1)
+                make.left.width.equalToSuperview()
+            }
+            cancelBtn.snp.makeConstraints { make in
+                make.left.equalToSuperview()
+                make.top.equalTo(verticalLine.snp_bottom)
+                make.width.equalTo(btnW)
+                make.bottom.equalTo(contentView)
+            }
+            horizonLine.snp.makeConstraints { make in
+                make.left.equalTo(cancelBtn.snp_right)
+                make.height.top.equalTo(cancelBtn)
+                make.width.equalTo(1)
+            }
+            confirmBtn.snp.makeConstraints { make in
+                make.right.equalToSuperview()
+                make.height.width.bottom.equalTo(cancelBtn)
+            }
+        } else {
+            verticalLine.snp.makeConstraints { make in
+                make.top.equalTo(contentLab.snp_bottom).offset(cDefaultMargin)
+                make.height.equalTo(1)
+                make.left.width.equalToSuperview()
+            }
+            confirmBtn.snp.makeConstraints { make in
+                make.right.left.equalTo(titleLab)
+                make.top.equalTo(verticalLine.snp_bottom)
+                make.bottom.equalTo(contentView)
+            }
+        }
+    }
+
+    @objc func removeView() {
+        removeFromSuperview()
+    }
+
+    @objc override func btnClck(sender: UIButton) {
+        removeFromSuperview()
+        if remindBlock != nil {
+            remindBlock!(sender, remindData!)
+        }
+    }
+
+    /// 快速生成
+    /// - Parameters:
+    ///   - title: <#title description#>
+    ///   - summary: <#summary description#>
+    ///   - confirmTitle: <#confirmTitle description#>
+    ///   - remindHandle: <#remindHandle description#>
+    /// - Returns: <#description#>
+    class public func showUploadRemindView(title: String?, attributedTitle: NSAttributedString? = nil, summary: String, canMoreOpration: Bool = false, confirmTitle: String?, cancelTitle: String? = nil, cancelColor: UIColor? = nil, remindHandle: @escaping (_ sender: UIButton, _ baseModel: PQBaseModel?) -> Void) {
+        if UIApplication.shared.keyWindow?.viewWithTag(cUploadViewRemindTag) != nil {
+            UIApplication.shared.keyWindow?.viewWithTag(cUploadViewRemindTag)?.removeFromSuperview()
+        }
+        let remindData = PQBaseModel()
+        let paragraphStyle = NSMutableParagraphStyle()
+        paragraphStyle.lineSpacing = 3.0
+        paragraphStyle.alignment = .center
+        remindData.title = title
+        remindData.attributedTitle = NSMutableAttributedString(string: summary, attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 14), NSAttributedString.Key.foregroundColor: UIColor.hexColor(hexadecimal: "#666666"), NSAttributedString.Key.paragraphStyle: paragraphStyle])
+        let remindView = PQUploadRemindView(frame: CGRect(x: 0, y: 0, width: cScreenWidth, height: cScreenHeigth))
+        remindView.canMoreOpration = canMoreOpration
+        if confirmTitle != nil {
+            remindView.confirmTitle = confirmTitle!
+        }
+        if cancelTitle != nil {
+            remindView.cancelTitle = cancelTitle!
+        }
+        if cancelColor != nil {
+            remindView.cacelColor = cancelColor!
+        }
+        if attributedTitle != nil {
+            remindView.attributedTitle = attributedTitle
+        }
+        remindView.remindBlock = { sender, baseModel in
+            remindHandle(sender, baseModel)
+        }
+        remindView.tag = cUploadViewRemindTag
+        UIApplication.shared.keyWindow?.addSubview(remindView)
+        remindView.remindData = remindData
+    }
+}