swift实现提示框第三方库:MBProgressHUD

2017-01-12 15:07

GitHud的下载地址是:https://github.com/jdg/MBProgressHUD/

下载完成后,将MBProgressHUD.h和MBProgressHUD.m拖入已经新建好的Swift项目。因为使用的swift语言,所以拖入项目的时候会提示是否新建一个桥接objective-c与swift的文件,选择是即可。此步骤会自动新建一个文件。如图:
这里写图片描述
在该文件(MBProgressHUDDemo-Bridging-Header.h)中,有这样的一句注释:
// Use this file to impZ喎�"/kf/ware/vc/" target="_blank" class="keylink">vcnQgeW91ciB0YXJnZXQmcnNxdW87cyBwdWJsaWMgaGVhZGVycyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGV4cG9zZSB0byBTd2lmdC48L3A+DQo8cD7S4su806a4w8rHtbzI6823zsS8/qOsyrm1w8TjtcRzd2lmdL/J0tTKudPDzc+9+MiltcTOxLz+oaM8YnIgLz4NCtLytMujrNTauMPOxLz+1tDQtNXiw7TSu77ko7o8L3A+DQo8cHJlIGNsYXNzPQ=="brush:java;">#import "MBProgressHUD.h"

  • 1
  • 会发现在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:
    这里写图片描述
    自定义提示框:
    这里写图片描述
    纯文本提示框:
    这里写图片描述