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 ...
随机推荐
- Python的程序结构[4] -> 函数/Function[1] -> 内建函数
内建函数 / Built-in Function or Method Python中有许多的内建函数(查看内建模块部分),此处将对内建函数进行介绍 内建函数 ord / built-in functi ...
- 洛谷——P2656 采蘑菇
P2656 采蘑菇 题目描述 小胖和ZYR要去ESQMS森林采蘑菇. ESQMS森林间有N个小树丛,M条小径,每条小径都是单向的,连接两个小树丛,上面都有一定数量的蘑菇.小胖和ZYR经过某条小径一次, ...
- viewflipper的高度设置
由于ViewFlipper的一个子view是这个ImageView,ViewFilpper在切换时,高度总是为子View中高度最大的值作为其高度值. 后经搜索,发现需要设置android:measur ...
- 【CodeForces 788B】奇妙的一笔画问题
[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=61845295 题目大意 给定n个点m条边的无向图 ...
- java.util.Arrays导入报错问题
我的原因:项目jdk的路径没有找到引起的 解决办法:右击项目->Properties->Java build path->Libraries 下错误的jdk,remove,addLi ...
- symbol(s) not found for architecture arm64
问题如下: 解决:更改环境 ok Standard architectures (armv7, arm7s)
- java 的""和null的区别
null和""的区别 问题一: null和""的区别 String s=null; string.trim()就会抛出为空的exception String s ...
- virtualenv 环境安装
# Python 2.7.6:wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xztar xf Python-2.7.6.tar. ...
- Architecting Android…The clean way?
Architecting Android-The clean way? 原文链接:http://fernandocejas.com/2014/09/03/architecting-android-th ...
- Makefile之文件搜索
Makefile之文件搜索 1.Makefile 文件中的"VPATH"变量 如果没有指明这个变量,make只会在当前目录下查找依赖文件和目标文件: 如果定义了这个变量,make会 ...