Pārlūkot izejas kodu

添加公开方法

jsonwang 3 gadi atpakaļ
vecāks
revīzija
a3fd29db9a

+ 1 - 1
BFFramework/Classes/Base/Model/PQBaseModel.swift

@@ -31,7 +31,7 @@ public class PQBaseModel: Object {
         return "uniqueId"
     }
 
-    override required init() {
+    override required public init() {
         super.init()
         uniqueId = getUniqueId(desc: "uniqueId")
     }

+ 211 - 11
BFFramework/Classes/Base/View/PQRemindView.swift

@@ -1,18 +1,218 @@
+
+// MARK: - 设置页退出登录跟注销账号提示视图
+
+/// 设置页退出登录跟注销账号提示视图
+public class PQRemindView: UIView {
+    public var isBanned: Bool = false // 是否是拉黑用户提示
+    public var isBlank: Bool = false { // 是否是黑色弹窗
+        didSet {
+            if isBlank {
+                contentView.backgroundColor = UIColor.hexColor(hexadecimal: "#212223")
+                titleLab.textColor = UIColor.white
+                contentLab.textColor = UIColor.white
+                cancelBtn.setTitleColor(UIColor.white, for: .normal)
+                confirmBtn.setTitleColor(UIColor.white, for: .normal)
+            } else {
+                contentView.backgroundColor = UIColor.white
+                contentLab.textColor = UIColor.hexColor(hexadecimal: "#666666")
+                titleLab.textColor = UIColor.black
+                cancelBtn.setTitleColor(UIColor.black, for: .normal)
+                confirmBtn.setTitleColor(UIColor.black, for: .normal)
+            }
+        }
+    }
+
+    public var remindBlock: ((_ sender: UIButton, _ remindData: PQBaseModel?) -> Void)?
+
+    lazy var contentView: UIView = {
+        let contentView = UIView()
+        contentView.backgroundColor = UIColor.white
+        contentView.addCorner(corner: 4)
+        return contentView
+    }()
+
+    lazy var titleLab: UILabel = {
+        let titleLab = UILabel()
+        titleLab.font = UIFont.systemFont(ofSize: 18, weight: .medium)
+        titleLab.textAlignment = .center
+        titleLab.numberOfLines = 0
+        titleLab.textColor = UIColor.black
+        return titleLab
+    }()
+
+    lazy var contentLab: UILabel = {
+        //        let contentLab = TYAttributedLabel.init()
+        //        contentLab.textAlignment = CTTextAlignment.center
+        //        contentLab.verticalAlignment = .center
+        //        contentLab.highlightedLinkBackgroundColor = UIColor.white
+        //        contentLab.numberOfLines = 0
+        //        contentLab.font = UIFont.systemFont(ofSize: 14)
+        //        contentLab.textColor = UIColor.hexColor(hexadecimal: "#666666")
+        let contentLab = UILabel()
+        contentLab.font = UIFont.systemFont(ofSize: 16)
+        contentLab.textAlignment = .center
+        contentLab.numberOfLines = 0
+        contentLab.textColor = UIColor.hexColor(hexadecimal: "#666666")
+        return contentLab
+    }()
+
+    lazy var cancelBtn: UIButton = {
+        let cancelBtn = UIButton(type: .custom)
+        cancelBtn.setTitle("取消", for: .normal)
+        cancelBtn.setTitleColor(UIColor.black, for: .normal)
+        cancelBtn.tag = 1
+        cancelBtn.addTarget(self, action: #selector(btnClck(sender:)), for: .touchUpInside)
+        cancelBtn.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .medium)
+        return cancelBtn
+    }()
+
+    lazy var confirmBtn: UIButton = {
+        let confirmBtn = UIButton(type: .custom)
+        confirmBtn.setTitle("确定", for: .normal)
+        confirmBtn.setTitleColor(UIColor.black, for: .normal)
+        confirmBtn.tag = 2
+        confirmBtn.addTarget(self, action: #selector(btnClck(sender:)), for: .touchUpInside)
+        confirmBtn.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .medium)
+        return confirmBtn
+    }()
+
+    lazy var verticalLine: UIView = {
+        let verticalLine = UIView()
+        verticalLine.backgroundColor = UIColor.hexColor(hexadecimal: "#E5E5E5")
+        return verticalLine
+    }()
+
+    lazy var horizonLine: UIView = {
+        let horizonLine = UIView()
+        horizonLine.backgroundColor = UIColor.hexColor(hexadecimal: "#E5E5E5")
+        return horizonLine
+    }()
+
+    override public init(frame: CGRect) {
+        super.init(frame: frame)
+        addSubview(contentView)
+        contentView.addSubview(titleLab)
+        contentView.addSubview(contentLab)
+        contentView.addSubview(cancelBtn)
+        contentView.addSubview(confirmBtn)
+        contentView.addSubview(verticalLine)
+        contentView.addSubview(horizonLine)
+        backgroundColor = cShadowColor
+    }
+
+    required init?(coder _: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+
+    public var  remindData: PQBaseModel? {
+        didSet {
+            addData()
+            addLayout()
+        }
+    }
+
+    public func addData() {
+        titleLab.text = remindData?.title
+        contentLab.text = remindData?.summary
+        cancelBtn.setTitleColor(isBanned ? (isBlank ? UIColor.white : UIColor.black) : (isBlank ? UIColor.white : UIColor.hexColor(hexadecimal: "#666666")), for: .normal)
+        if isBanned {
+            titleLab.textAlignment = .center
+        } else {
+            titleLab.textAlignment = .left
+        }
+    }
+
+    func addLayout() {
+        var summH: CGFloat = 0
+        var titleH: CGFloat = 0
+        if (remindData?.summary?.count ?? 0) > 0 {
+            summH = sizeWithText(text: remindData?.summary ?? "", font: UIFont.systemFont(ofSize: 16, weight: .medium), size: CGSize(width: cScreenWidth - cDefaultMargin * 12, height: CGFloat.greatestFiniteMagnitude)).height + cDefaultMargin
+        }
+        if (remindData?.title?.count ?? 0) > 0 {
+            titleH = sizeWithText(text: remindData?.title ?? "", font: UIFont.systemFont(ofSize: 18, weight: .medium), size: CGSize(width: cScreenWidth - cDefaultMargin * 12, height: CGFloat.greatestFiniteMagnitude)).height + cDefaultMargin
+            if titleH < cDefaultMargin * 2 {
+                titleH = cDefaultMargin * 2
+            }
+        }
+        let contentH: CGFloat = cDefaultMargin * 2 + (titleH > 0 ? titleH + cDefaultMargin : 0) + (summH > 0 ? summH + cDefaultMargin : 0) + cDefaultMargin * 3 + (isBanned ? cDefaultMargin * 2 : 0)
+        contentView.snp.makeConstraints { make in
+            make.left.equalTo(self).offset(cDefaultMargin * 4)
+            make.right.equalTo(self).offset(-cDefaultMargin * 4)
+            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(cDefaultMargin * 2)
+        }
+        contentLab.snp.makeConstraints { make in
+            make.top.equalTo(titleLab.snp_bottom).offset(summH > 0 ? cDefaultMargin : 0)
+            make.left.right.equalTo(titleLab)
+            make.height.equalTo(summH)
+        }
+        if isBanned {
+            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 {
+            confirmBtn.snp.makeConstraints { make in
+                make.right.equalTo(titleLab)
+                make.height.equalTo(cDefaultMargin * 4)
+                make.width.equalTo(cDefaultMargin * 6)
+                make.bottom.equalTo(contentView).offset(-cDefaultMargin)
+            }
+            cancelBtn.snp.makeConstraints { make in
+                make.right.equalTo(confirmBtn.snp_left).offset(-cDefaultMargin)
+                make.height.equalTo(cDefaultMargin * 4)
+                make.width.equalTo(cDefaultMargin * 6)
+                make.bottom.equalTo(confirmBtn)
+            }
+        }
+    }
+
+    @objc func btnClck(sender: UIButton) {
+        removeFromSuperview()
+        if remindBlock != nil {
+            remindBlock!(sender, remindData!)
+        }
+    }
+}
+
 // MARK: 空白提示页
 
 /// 空白提示页
-class PQEmptyRemindView: UIView {
+public class PQEmptyRemindView: UIView {
     // 回调
-    var fullRefreshBloc: ((_ isNetConnected: Bool, _ emptyData: PQEmptyModel?) -> Void)?
+    public var fullRefreshBloc: ((_ isNetConnected: Bool, _ emptyData: PQEmptyModel?) -> Void)?
 
-    lazy var imageView: UIImageView = {
+    lazy public var imageView: UIImageView = {
         let imageView = UIImageView()
         imageView.backgroundColor = UIColor.clear
         imageView.contentMode = .scaleAspectFit
         return imageView
     }()
 
-    lazy var remindLab: UILabel = {
+    lazy public var remindLab: UILabel = {
         let remindLab = UILabel()
         remindLab.font = UIFont.systemFont(ofSize: 16)
         remindLab.numberOfLines = 1
@@ -21,7 +221,7 @@ class PQEmptyRemindView: UIView {
         return remindLab
     }()
 
-    lazy var shimmeringView: FBShimmeringView = {
+    lazy public var shimmeringView: FBShimmeringView = {
         let shimmeringView = FBShimmeringView()
         shimmeringView.isShimmering = false
         shimmeringView.shimmeringBeginFadeDuration = 0.3
@@ -32,7 +232,7 @@ class PQEmptyRemindView: UIView {
         return shimmeringView
     }()
 
-    lazy var remindSubLab: UILabel = {
+    lazy public var remindSubLab: UILabel = {
         let remindSubLab = UILabel()
         remindSubLab.font = UIFont.systemFont(ofSize: 14)
         remindSubLab.numberOfLines = 1
@@ -65,11 +265,11 @@ class PQEmptyRemindView: UIView {
         backgroundColor = UIColor.black
     }
 
-    required init?(coder _: NSCoder) {
+    required public init?(coder _: NSCoder) {
         fatalError("init(coder:) has not been implemented")
     }
 
-    @objc var emptyData: PQEmptyModel? {
+    @objc public var emptyData: PQEmptyModel? {
         didSet {
             addData()
             addLayout()
@@ -78,7 +278,7 @@ class PQEmptyRemindView: UIView {
 }
 
 extension PQEmptyRemindView {
-    func addData() {
+    public func addData() {
         if !isNetConnected() {
             remindLab.text = "网络连接失败,请检查网络后重试"
             remindSubLab.isHidden = true
@@ -108,14 +308,14 @@ extension PQEmptyRemindView {
         }
     }
 
-    override var isHidden: Bool {
+    override public var isHidden: Bool {
         didSet {
             addData()
             addLayout()
         }
     }
 
-    func addLayout() {
+    public func addLayout() {
         var imageH: CGFloat = cDefaultMargin * 7
         var contentH: CGFloat = 0
 

+ 3 - 3
BFFramework/Classes/Categorys/UIView+Ext.swift

@@ -409,7 +409,7 @@ extension UIImageView {
     /// imageView加载网络图片
     /// - Parameters:
     ///   - url: 网络url
-     public func setNetImage(url: String?, placeholder: UIImage = UIImage(named: "placehold_image")!) {
+     public func setNetImage(url: String?, placeholder: UIImage = UIImage.init().BF_Image(named: "placehold_image")) {
         if url == nil || (url?.count ?? 0) <= 0 {
             BFLog(message: "设置按钮网络图片地址为空")
             return
@@ -461,7 +461,7 @@ extension UIButton {
     /// UIButton加载网络图片
     /// - Parameters:
     ///   - url: 网络url
-     public func setNetImage(url: String?, placeholder: UIImage = UIImage(named: "placehold_image")!) {
+     public func setNetImage(url: String?, placeholder: UIImage = UIImage.init().BF_Image(named: "placehold_image")) {
         if url == nil || (url?.count ?? 0) <= 0 {
             BFLog(message: "设置按钮网络图片地址为空")
             return
@@ -475,7 +475,7 @@ extension UIButton {
     /// UIButton加载网络背景图片
     /// - Parameters:
     ///   - url: 网络url
-     public func setNetBackgroundImage(url: String, placeholder: UIImage = UIImage(named: "placehold_image")!) {
+     public func setNetBackgroundImage(url: String, placeholder: UIImage = UIImage.init().BF_Image(named: "placehold_image")) {
         kf.setBackgroundImage(with: URL(string: url), for: .normal, placeholder: placeholder, options: url.suffix(5) == ".webp" ? [.processor(WebPProcessor.default), .cacheSerializer(WebPSerializer.default)] : nil, progressBlock: { _, _ in
 
         }) { _, _, _, _ in

+ 1 - 1
BFFramework/Classes/Utils/PQCommonMethodUtil.swift

@@ -97,7 +97,7 @@ public func cIPHONE_X() -> Bool {
 /// - Parameters:
 ///   - url: 网络url
 ///   - mainView: 需要加载的视图
-public func netImage(url: String, mainView: Any, placeholder: UIImage = UIImage(named: "placehold_image")!) {
+public func netImage(url: String, mainView: Any, placeholder: UIImage = UIImage.init().BF_Image(named: "placehold_image")) {
     if mainView is UIImageView {
         (mainView as! UIImageView).kf.setImage(with: URL(string: url), placeholder: placeholder, options: url.suffix(5) == ".webp" ? [.processor(WebPProcessor.default), .cacheSerializer(WebPSerializer.default)] : nil, progressBlock: { _, _ in
 

+ 2 - 2
BFFramework/Classes/Utils/PQSingletoVideoPlayer.swift

@@ -21,7 +21,7 @@ public class PQSingletoVideoPlayer: NSObject {
 
     var playId: String = getUniqueId(desc: "playId") // 播放ID
     /// 进度回调
-    var progressBloc: ((_ loadProgress: Float, _ playProgress: Float, _ duration: Float) -> Void)?
+    public var progressBloc: ((_ loadProgress: Float, _ playProgress: Float, _ duration: Float) -> Void)?
     /// 播放状态回调
     public var playStatusBloc: ((_ playStatus: PQVIDEO_PLAY_STATUS) -> Void)?
     public var playControllerView: UIView?
@@ -75,7 +75,7 @@ public class PQSingletoVideoPlayer: NSObject {
         }
     }
 
-    func resetPlayer() {
+    public func resetPlayer() {
         if (playControllerView != nil) {
             player.removeVideoWidget()
             player.setupVideoWidget(playControllerView, insert: 0)