123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515 |
- // MARK: - 设置页退出登录跟注销账号提示视图
- /// 设置页退出登录跟注销账号提示视图
- open 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 public var contentView: UIView = {
- let contentView = UIView()
- contentView.backgroundColor = UIColor.white
- contentView.addCorner(corner: 4)
- return contentView
- }()
- lazy public 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 public 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 public 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 public 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 public var verticalLine: UIView = {
- let verticalLine = UIView()
- verticalLine.backgroundColor = UIColor.hexColor(hexadecimal: "#E5E5E5")
- return verticalLine
- }()
- lazy public 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 public init?(coder _: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- public var remindData: PQBaseModel? {
- didSet {
- addData()
- addLayout()
- }
- }
- open 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
- }
- }
- open 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 open func btnClck(sender: UIButton) {
- removeFromSuperview()
- if remindBlock != nil {
- remindBlock!(sender, remindData!)
- }
- }
- }
- // MARK: 空白提示页
- /// 空白提示页
- open class PQEmptyRemindView: UIView {
- // 回调
- public var fullRefreshBloc: ((_ isNetConnected: Bool, _ emptyData: PQEmptyModel?) -> Void)?
- lazy public var imageView: UIImageView = {
- let imageView = UIImageView()
- imageView.backgroundColor = UIColor.clear
- imageView.contentMode = .scaleAspectFit
- return imageView
- }()
- lazy public var remindLab: UILabel = {
- let remindLab = UILabel()
- remindLab.font = UIFont.systemFont(ofSize: 16)
- remindLab.numberOfLines = 1
- remindLab.textAlignment = NSTextAlignment.center
- remindLab.textColor = UIColor.white
- return remindLab
- }()
- // lazy public var shimmeringView: FBShimmeringView = {
- // let shimmeringView = FBShimmeringView()
- // shimmeringView.isShimmering = false
- // shimmeringView.shimmeringBeginFadeDuration = 0.3
- // shimmeringView.shimmeringEndFadeDuration = 0.1
- // shimmeringView.shimmeringOpacity = 0.2
- // shimmeringView.shimmeringSpeed = 300
- // shimmeringView.contentView = remindLab
- // return shimmeringView
- // }()
- lazy public var remindSubLab: UILabel = {
- let remindSubLab = UILabel()
- remindSubLab.font = UIFont.systemFont(ofSize: 14)
- remindSubLab.numberOfLines = 1
- remindSubLab.textAlignment = NSTextAlignment.center
- remindSubLab.textColor = UIColor.hexColor(hexadecimal: "#999999")
- return remindSubLab
- }()
- lazy public var refreshBtn: UIButton = {
- let refreshBtn = UIButton(type: .custom)
- refreshBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#EE0051")
- refreshBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15)
- refreshBtn.setTitleColor(UIColor.white, for: .normal)
- refreshBtn.setTitle("刷新", for: .normal)
- refreshBtn.setTitle("重新连接网络", for: .selected)
- refreshBtn.addCorner(corner: cDefaultMargin * 2)
- refreshBtn.isHidden = true
- refreshBtn.addTarget(self, action: #selector(fullRefresh), for: .touchUpInside)
- return refreshBtn
- }()
- override public init(frame: CGRect) {
- super.init(frame: frame)
- addSubview(imageView)
- // addSubview(shimmeringView)
- addSubview(remindSubLab)
- addSubview(refreshBtn)
- let ges = UITapGestureRecognizer(target: self, action: #selector(fullRefresh))
- addGestureRecognizer(ges)
- backgroundColor = PQBFConfig.shared.styleBackGroundColor
- }
- required public init?(coder _: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- @objc public var emptyData: PQEmptyModel? {
- didSet {
- addData()
- addLayout()
- }
- }
- }
- extension PQEmptyRemindView {
- public func addData() {
- if !isNetConnected() {
- remindLab.text = "网络连接失败,请检查网络后重试"
- remindSubLab.isHidden = true
- refreshBtn.isHidden = false
- refreshBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#EE0051")
- refreshBtn.setTitleColor(UIColor.white, for: .normal)
- refreshBtn.setTitle("刷新", for: .normal)
- imageView.image = UIImage.init().BF_Image(named: "pic_network")
- } else {
- if emptyData?.emptyImage != nil, emptyData?.emptyImage?.count ?? 0 > 0 {
- imageView.image = UIImage.init().BF_Image(named: emptyData?.emptyImage ?? "")
- } else {
- imageView.image = nil
- }
- remindLab.text = emptyData?.title
- remindSubLab.text = emptyData?.summary
- refreshBtn.isHidden = emptyData?.isRefreshHidden ?? true
- if emptyData?.refreshImage != nil, (emptyData?.refreshImage?.count ?? 0) > 0 {
- refreshBtn.setImage(UIImage.init().BF_Image(named: emptyData?.refreshImage ?? ""), for: .normal)
- } else {
- refreshBtn.setImage(nil, for: .normal)
- }
- refreshBtn.setAttributedTitle(emptyData?.refreshTitle, for: .normal)
- if emptyData?.refreshBgColor != nil {
- refreshBtn.backgroundColor = emptyData?.refreshBgColor
- }
- }
- }
- override public var isHidden: Bool {
- didSet {
- addData()
- addLayout()
- }
- }
- public func addLayout() {
- var imageH: CGFloat = cDefaultMargin * 7
- var contentH: CGFloat = 0
- if (emptyData?.emptyImage != nil && emptyData?.emptyImage?.count ?? 0 > 0) || !isNetConnected() {
- contentH = contentH + imageH + cDefaultMargin
- } else {
- imageH = 0
- }
- if emptyData?.title != nil, emptyData?.title?.count ?? 0 > 0 {
- contentH = contentH + cDefaultMargin * 2 + cDefaultMargin
- }
- if emptyData?.summary != nil, emptyData?.summary?.count ?? 0 > 0 {
- contentH = contentH + cDefaultMargin * 2 + cDefaultMargin
- }
- if !refreshBtn.isHidden {
- contentH = contentH + cDefaultMargin + cDefaultMargin * 4
- }
- let topY = (frame.height - contentH) / 2
- imageView.snp.remakeConstraints { make in
- make.top.equalTo(topY)
- make.centerX.equalTo(self)
- make.height.equalTo(imageH)
- }
- // shimmeringView.snp.makeConstraints { make in
- // make.left.right.equalTo(self)
- // make.top.equalTo(imageView.snp_bottom).offset(cDefaultMargin)
- // }
- remindLab.snp.remakeConstraints { make in
- make.size.equalToSuperview()
- }
- remindSubLab.snp.makeConstraints { make in
- make.left.right.equalTo(self)
- make.top.equalTo(remindLab.snp_bottom).offset(cDefaultMargin)
- }
- refreshBtn.snp.makeConstraints { make in
- make.width.equalTo(cDefaultMargin * 13)
- make.height.equalTo(cDefaultMargin * 4)
- make.top.equalTo(remindSubLab.snp_bottom).offset(cDefaultMargin)
- make.centerX.equalToSuperview()
- }
- }
- @objc func fullRefresh() {
- let isConnected: Bool = isNetConnected()
- if !isConnected {
- cShowHUB(superView: nil, msg: "网络不给力")
- }
- if fullRefreshBloc != nil {
- fullRefreshBloc!(isConnected, emptyData)
- }
- }
- func addShimmeringView() {}
- 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 public 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
- }
- }
|