• iOS swift 给MBProgressHUD添加分类


    MBProgressHUD在开发中经常会用到,今天把MBProgressHUD的方法拓展了一下,更加方便使用
    1.可以实现gif图片的展示,使用时请替换test.gif
    2.可以控制是否允许交互,如果允许交互,那么在弹窗期间界面不可以点击
    3.更便捷的控制succss和error的提示,使用时,请替换对应的success.png,error.png
    4.所有参数都集中在show方法中,参数都是可以选的,最简单的显示一个弹窗仅需MBProgressHUD.show()

    import Foundation
    
    extension MBProgressHUD {
        
        /// MBProgressHUD gif显示
        ///
        /// - Parameters:
        ///   - view: view default -> UIWindow
        ///   - disableInteraction: 是否使能交互
        ///   - animated: 动画 true
        static func showGif(to view:UIView? = nil,disableInteraction:Bool = true,animated:Bool = true){
            //如果是gif可以使用sdwebImage的方法加载本地gif
            let path = Bundle.main.path(forResource: "test", ofType: "gif")
            let data = NSData(contentsOfFile: path ?? "") as Data?
            guard let image = UIImage.sd_animatedGIF(with: data) else{
                fatalError("gif图片加载失败");
            }
            let giftImgView = UIImageView(image: image)
            let hud = MBProgressHUD.showHudAdded(to: view, animated: animated)
            hud?.color = .clear
            hud?.mode = .customView
            hud?.isUserInteractionEnabled = disableInteraction
            hud?.customView = giftImgView
        }
        
        /// 拓展MBProgressHUD显示方法
        ///
        /// - Parameters:
        ///   - message: text
        ///   - icon: picture
        ///   - view: view default->UIwindow
        ///   - disableInteraction: 是否使能交互
        ///   - afterDelay: 延时 默认0
        ///   - animated: 动画 true
        static func show(message:String? = nil ,
                         icon:String? = nil ,
                         to view:UIView? = nil,
                         disableInteraction:Bool = true,
                         afterDelay:TimeInterval = 0,
                         animated:Bool = true){
            
            let hud = self.showHudAdded(to: view, animated: true)
            hud?.isUserInteractionEnabled = disableInteraction
            hud?.labelText = message
            if let image = UIImage(named: "MBProgressHUD.bundle/(icon ?? "")") {
                let imgView = UIImageView(image: image)
                hud?.customView = imgView
                hud?.mode = .customView
            }
            if afterDelay > 0.0 {
                hud?.hide(true, afterDelay: afterDelay)
            }
        }
        
        static func showSuccess(message:String = "",to view:UIView? = nil){
            show(message: message, icon: "success.png", to: view ,afterDelay: 2.0)
        }
        
        static func showError(message:String = "",to view:UIView? = nil){
            show(message: message, icon: "error.png", to: view ,afterDelay: 2.0)
        }
    
        /// 移除keywindow的hud
        static func hide(){
           let v = UIApplication.shared.windows.last;
           hide(for: v, animated: true)
        }
        
        private  static func showHudAdded(to view:UIView? = nil,animated:Bool = true) -> MBProgressHUD?{
            var v = view
            if v == nil {
                v = UIApplication.shared.windows.last;
            }
            hide(for: v, animated: true)
            let hud = MBProgressHUD.showAdded(to: v, animated: animated);
            hud?.dimBackground = false
            hud?.removeFromSuperViewOnHide = true
            return hud
    
        }
    }
    
    

    转载请标注来源:https://www.cnblogs.com/qqcc1388/p/9851750.html

  • 相关阅读:
    02-Java 数组和排序算法
    Spring Security 入门
    mysql外键理解
    redis能否对set数据的每个member设置过期时间
    Redis sortedset实现元素自动过期
    mysql之触发器trigger
    一篇很棒的 MySQL 触发器学习教程
    mysql触发器
    云游戏
    mysql触发器个人实战
  • 原文地址:https://www.cnblogs.com/qqcc1388/p/9851750.html
Copyright © 2020-2023  润新知