本文使用swift语言使用MBProgressHUD。
开源项目MBProgressHUD可以实现多种形式的提示框。使用简单,方便。
GitHud的下载地址是:https://github.com/jdg/MBProgressHUD/
下载完成后,将MBProgressHUD.h和MBProgressHUD.m拖入已经新建好的swift项目。因为使用的swift语言,所以拖入项目的时候会提示是否新建一个桥接objective-c与swift的文件,选择是即可。此步骤会自动新建一个文件。如图:
在该文件(MBProgressHUDDemo-Bridging-Header.h)中,有这样的一句注释:
// Use this file to import your target’s public headers that you would like to expose to Swift.
意思应该是导入头文件,使得你的swift可以使用拖进去的文件。
因此,在该文件中写这么一句:
#import "MBProgressHUD.h"
会发现在Build Settings–>Swift complier -Code Generation中,多了一个项,个人理解是桥接文件MBProgressHUDDemo-Bridging-Header.h的声明。如果有不同见解,欢迎指正。如图:
尝试了几种样式的提示框。使用按键来触发。
以下是整个Demo的代码:
//
// ViewController.swift
// MBProgressHUDDemo
// MBProgressHUD GitHud地址:https://github.com/jdg/MBProgressHUD/
// Created by mobao on 15/7/1.
// Copyright (c) 2015年 mobao. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBAction func TextDialogBtn(sender: AnyObject) {
showTextDialog()
}
@IBAction func ProgressDialogBtn1(sender: AnyObject) {
showProgressDialog1()
}
@IBAction func ProgressDialogBtn2(sender: AnyObject) {
showProgressDialog2()
}
@IBAction func CustomDialogBtn(sender: AnyObject) {
showCustomDialog()
}
@IBAction func AllTextDialogBtn(sender: AnyObject) {
showAllTextDialog()
}
var HUD : MBProgressHUD?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
//文本提示框
func showTextDialog(){
//初始化对话框,置于当前的View当中
HUD = MBProgressHUD(view: self.view)
self.view.addSubview(HUD!)
//如果设置此属性,则当前view置于后台
HUD?.dimBackground = true
//设置对话框文字
HUD?.labelText = "请稍等"
HUD?.showAnimated(true, whileExecutingBlock: {
sleep(3)
}, completionBlock: {
self.HUD?.removeFromSuperview()
self.HUD = nil
})
}
//框型进度提示
func showProgressDialog1(){
//初始化对话框,置于当前的View当中
HUD = MBProgressHUD(view: self.view)
self.view.addSubview(HUD!)
//如果设置此属性,则当前view置于后台
HUD?.dimBackground = true
//设置对话框文字
HUD?.labelText = "正在加载"
//设置模式为进度框形的
HUD?.mode = MBProgressHUDMode.Determinate
HUD?.showAnimated(true, whileExecutingBlock: {
var progress : Float = 0.0
while(progress < 1.0){
progress += 0.01
self.HUD?.progress = progress
usleep(50000)
}
}, completionBlock: {
self.HUD?.removeFromSuperview()
self.HUD = nil
})
}
//进度条提示
func showProgressDialog2(){
//初始化对话框,置于当前的View当中
HUD = MBProgressHUD(view: self.view)
self.view.addSubview(HUD!)
//如果设置此属性,则当前view置于后台
HUD?.dimBackground = true
//设置对话框文字
HUD?.labelText = "正在加载"
//设置模式为进度条
HUD?.mode = MBProgressHUDMode.DeterminateHorizontalBar
HUD?.showAnimated(true, whileExecutingBlock: {
var progress : Float = 0.0
while(progress < 1.0){
progress += 0.01
self.HUD?.progress = progress
usleep(50000)
}
}, completionBlock: {
self.HUD?.removeFromSuperview()
self.HUD = nil
})
}
//自定义提示
func showCustomDialog(){
//初始化对话框,置于当前的View当中
HUD = MBProgressHUD(view: self.view)
self.view.addSubview(HUD!)
//如果设置此属性,则当前view置于后台
HUD?.dimBackground = true
//设置对话框文字
HUD?.labelText = "操作成功"
//设置模式为自定义
HUD?.mode = MBProgressHUDMode.CustomView
HUD?.customView = UIImageView(image: UIImage(named: "37x-Checkmark-1"))
HUD?.showAnimated(true, whileExecutingBlock: {
sleep(2)
}, completionBlock: {
self.HUD?.removeFromSuperview()
self.HUD = nil
})
}
//纯文本提示
func showAllTextDialog(){
//初始化对话框,置于当前的View当中
HUD = MBProgressHUD(view: self.view)
self.view.addSubview(HUD!)
//如果设置此属性,则当前view置于后台
HUD?.dimBackground = true
//设置模式为纯文本提示
HUD?.mode = MBProgressHUDMode.Text
//设置对话框文字
HUD?.labelText = "操作成功"
//指定距离中心点的X轴和Y轴的偏移量,如果不指定则在屏幕中间显示
// HUD?.yOffset = 150.0
// HUD?.xOffset = 150.0
HUD?.showAnimated(true, whileExecutingBlock: {
sleep(2)
}, completionBlock: {
self.HUD?.removeFromSuperview()
self.HUD = nil
})
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
以下是运行的效果:
文本提示框:
进度提示框1:
进度提示框2:
自定义提示框:
纯文本提示框: