Swift - 第三方透明指示器MBProgressHUD使用详解1(安装配置、基本用法)
作者:hangge | 2018-04-20 08:10
在程序开发中,我们常常会根据不同情况显示一些透明指示层(HUD 窗口),比如:操作执行完毕后的提示框,请求数据时的 loading 视图等等。我们当然可以自己实现这些 HUD 窗口,但最方便的还是直接使用一些比较成熟的第三方库。在接下来的几篇文章中,我会详细地介绍几款目前比较好用的第三方 HUD 库给大家。
一、MBProgressHUD
1,基本介绍
(1)MBProgressHUD 是一个使用 Objective-C 写的 HUD 库,它可以在后台线程中显示一个带有指示器或标签的半透明的 HUD 窗口。
(2)其实苹果官方自己就有一个带有此功能的类:UIProgressHUD,只不过它是私有的,不让用。而 MBProgressHUD 可以代替私有的 UIProgressHUD,并提供一些额外的特性。
2,安装配置
(1)从 GitHub 上下载最新的代码:https://github.com/jdg/MBProgressHUD
(2)将下载下来的源码包中 MBProgressHUD.h 和 MBProgressHUD.m 拖拽至我们的工程中。这时 XCode 会提示是否创建桥接文件,选择是,便会自动创建一个 Bridging-Header.h 桥接头文件。
(3)最后在这个新建的桥接文件中,引入 MBProgressHUD 库即可。
#import "MBProgressHUD.h"
二、基本用法
1,普通提示框
(1)显示最简单的“菊花”的提示
//初始化HUD窗口,并置于当前的View当中显示 _ = MBProgressHUD.showAdded(to: self.view, animated: true)
(2)显示“纯文字”的提示
//初始化HUD窗口,并置于当前的View当中显示 let hud = MBProgressHUD.showAdded(to: self.view, animated: true) //纯文本模式 hud.mode = .text //设置提示文字 hud.label.text = "请稍等"
//初始化HUD窗口,并置于当前的View当中显示 let hud = MBProgressHUD.showAdded(to: self.view, animated: true) //纯文本模式 hud.mode = .text //设置提示标题 hud.label.text = "请稍等" //设置提示详情 hud.detailsLabel.text = "具体要等多久我也不知道"
(4)显示“菊花 + 文字”的提示
//初始化HUD窗口,并置于当前的View当中显示 let hud = MBProgressHUD.showAdded(to: self.view, animated: true) //设置提示文字 hud.label.text = "请稍等"
(5)显示“菊花 + 文字标题 + 详情”的提示
//初始化HUD窗口,并置于当前的View当中显示 let hud = MBProgressHUD.showAdded(to: self.view, animated: true) //设置提示标题 hud.label.text = "请稍等" //设置提示详情 hud.detailsLabel.text = "具体要等多久我也不知道"
2,带进度的提示框
(1)使用水平进度条
let hud = MBProgressHUD.showAdded(to: self.view, animated: true) hud.mode = .determinateHorizontalBar //显示水平进度条 hud.progress = 0.3 //当前进度 hud.label.text = "当前进度:30%"
(2)使用环形进度条
let hud = MBProgressHUD.showAdded(to: self.view, animated: true) hud.mode = .annularDeterminate //显示环形进度条 hud.progress = 0.3 //当前进度 hud.label.text = "当前进度:30%"
(3)使用饼状进度条
let hud = MBProgressHUD.showAdded(to: self.view, animated: true) hud.mode = .determinate //显示饼状进度条 hud.progress = 0.3 //当前进度 hud.label.text = "当前进度:30%"
三、对提示框进行操作
1,隐藏提示框
(1)立刻隐藏
(2)延迟隐藏
(3)通过 minShowTime 属性可以设置最短显示时间(默认为 0)。使用这个设置可以避免提示框显示后立即被隐藏。
(4)通过 animationType 属性可以设置提示框消失动画,有如下三种可选值:
//初始化HUD窗口,并置于当前的View当中显示 let hud = MBProgressHUD.showAdded(to: self.view, animated: true) //立刻隐藏HUD窗口 hud.hide(animated: true)
(2)延迟隐藏
//初始化HUD窗口,并置于当前的View当中显示 let hud = MBProgressHUD.showAdded(to: self.view, animated: true) //HUD窗口显示2秒后自动隐藏 hud.hide(animated: true, afterDelay: 2)
(3)通过 minShowTime 属性可以设置最短显示时间(默认为 0)。使用这个设置可以避免提示框显示后立即被隐藏。
let hud = MBProgressHUD.showAdded(to: self.view, animated: true) hud.label.text = "请稍等" hud.minShowTime = 3 //至少要等3秒钟才隐藏 hud.hide(animated: true) //由于设置了minShowTime,所以还需等3秒钟才隐藏
(4)通过 animationType 属性可以设置提示框消失动画,有如下三种可选值:
- .fade:逐渐透明消失(默认值)
- .zoomOut:逐渐缩小并透明消失
- .zoomIn:逐渐放大并透明消失
(5)通过 removeFromSuperViewOnHide 属性,可以设置提示框隐藏的时候是否从父视图中移除(默认为 false)
let hud = MBProgressHUD.showAdded(to: self.view, animated: true) hud.label.text = "请稍等" hud.removeFromSuperViewOnHide = true //隐藏时从父视图中移除 hud.hide(animated: true, afterDelay: 2) //2秒钟后自动隐藏
2,添加点击手势
下面样例给提示框添加个点击手势。当点击提示框后,提示框自动消失。当然在实际应用中,我们还可以在点击响应中进行一些其它操作,比如取消当前的网络请求等等。
import UIKit class ViewController: UIViewController { //提示框 var hud:MBProgressHUD? override func viewDidLoad() { super.viewDidLoad() //初始化HUD窗口,并置于当前的View当中显示 self.hud = MBProgressHUD.showAdded(to: self.view, animated: true) self.hud?.label.text = "请稍等" //添加单击手势 let tapSingle = UITapGestureRecognizer(target:self, action:#selector(hudTapped)) self.hud?.addGestureRecognizer(tapSingle) } //提示框点击响应 @objc func hudTapped(){ self.hud?.hide(animated: true) } }
全部评论(0)