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
iOS swift 给MBProgressHUD添加分类的更多相关文章
- [iOS]swift之UITableView添加通过xib创建的headerView坑爹问题
情景是这样的,我UITableView添加了一个HeaderView,这个HeaderView是通过xib创建,是UIView.出来的结果却出乎意料,UITableView的Cell最顶部的几个被He ...
- iOS swift的xcworkspace多项目管理(架构思想)
iOS swift的xcworkspace多项目管理(架构思想) 技术说明: 今天在这里分享 swift下的 xcworkspace多项目管理(架构思想),能为我们在开发中带来哪些便捷?能为我们对整 ...
- iOS Swift WisdomHUD 提示界面框架
iOS Swift WisdomHUD 提示界面框架 Framework Use profile(应用简介) 一:WisdomHUD简介 今天给大家介绍一款iOS的界面显示器:WisdomHUD,W ...
- iOS Swift WisdomKeyboardKing 键盘智能管家SDK
iOS Swift WisdomKeyboardKing 键盘智能管家SDK [1]前言: 今天给大家推荐个好用的开源框架:WisdomKeyboardKing,方面iOS日常开发,优点和功能请 ...
- ios 向工程里添加Fonts
ios 向工程里添加Fonts 1.网上搜索字体文件(后缀名为.ttf,或.odf),假如你加入的字体为微软雅黑 2.把字体库导入到工程的resouce中 3.然后在你的工程的Info.plist文件 ...
- iOS 向模拟器里添加照片
iOS 向模拟器里添加照片 模拟器里Photos最开始时是没有照片的,有时我们做Demo时需要Photos里面的照片做测试,这时就需要把Mac上的照片导入到模拟器里.步骤如下: 1,打开模拟器 2,选 ...
- iOS - Swift 命令行输入输出
1.类输出 Swift 语言中类输出方法重: override var description: String{ return String(format: "%@, %@", s ...
- Swift得知——使用和分类功能(四)
Swift得知--使用和分类功能(四) 总结Swift该功能使用的总可分为七类 1 ---- 没有返回值,没有參数的函数 2 ---- 有參数和返回值的函数 3 ---- 使用元祖来返回多个值 4 - ...
- iOS Swift 模块练习/swift基础学习
SWIFT项目练习 SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图 +控件 1.UIImag ...
随机推荐
- docker环境准备及理论
1.预热 内核运行在内核空间,进程运行在用户空间,linux进程特性:父进程负责子进程的创建和回收,白发人送黑发人.容器就是为了保护它里面的内容物,不受其他容器干扰,也不去干扰其他容器.容器让进程认为 ...
- 记录git rebase用法
git 是基于文件系统的版本管理工具,文档和详细介绍可以查看git 一.git commit --amend 如果你对文件做了修改需要和上一次的修改合并为一个change git add . git ...
- 设计模式之不变模式(Immutable Pattern)分析
http://www.iteye.com/topic/959751 最近老有人问我不变模式,我其实也理解得不深,于是花了一些时间进行学习总结,分析了一下不变模式(immutable pattern), ...
- Filter过滤器笔记1
Filter:过滤器 Filter主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链.使用Filter的完整流程是:Filter对用户请求进行预处 ...
- Java多线程设计模式(4)线程池模式
前序: Thread-Per-Message Pattern,是一种对于每个命令或请求,都分配一个线程,由这个线程执行工作.它将“委托消息的一端”和“执行消息的一端”用两个不同的线程来实现.该线程模式 ...
- 新建一个兼容eclipse和myeclipse、IDEA都兼容的项目结构(maven)
以下观点为个人理解,没实践过,后续再实现. 思路: 1.eclipse和myeclipse.IDEA这些开发工具新建的各自的项目时,都有自己的一套思路,项目结构都有各自的特点. 2.如果是这些开发工具 ...
- 关于Android导入开源项目:Error:Unable to load class 'org.gradle.api.publication.maven.internal.DefaultMavenFa
在导入开源项目时,有可能会要求需要maven插件,并报出一下错误: 对于没有安装maven插件的开发者来说,要去下载一个maven插件也许不困难,但是,有时候可能会像我一样懒,不去下载插件,那么我们可 ...
- kubernetes1.5.2集群部署过程--安全模式
使用https安全模式部署kubernetes集群,能保证集群通讯安全.有效限制非授权用户访问.但部署比非安全模式复杂的多. 本文为etcd.kubernetes集群中各个组件配置证书认证,所有组件通 ...
- Cocos2dx 粒子销毁问题
Cocos2dx 粒子销毁问题 DionysosLai(906391500@qq.com) 2014-7-3 之前在调试粒子特效时,在粒子编辑器有个选项是用来调整粒子的生命时间,当粒子存在的时间 ...
- JavaWeb项目实现文件下载
File file = new File(path);// path是根据日志路径和文件名拼接出来的 String filename = file.getName();// 获取日志文件名称 Inpu ...