MBProgressHUD+Extension.swift 7.76 KB
//
//  a.swift
//  xiaoshengyun
//
//  Created by wang on 2018/10/9.
//  Copyright © 2018年 wang. All rights reserved.
//

import UIKit
import MBProgressHUD



extension MBProgressHUD {
    

    class func showh(_ text: String, yOffset: CGFloat = 0, delay: TimeInterval = 2) {
        hide(animated: false)
         let view: UIView = KeyWindow
        // 快速显示一个提示信息
        let hud = MBProgressHUD.showAdded(to: view, animated: true)
        // 允许背景可点击
        hud.isUserInteractionEnabled = false

        hud.bezelView.style = .solidColor
        
        hud.mode = .customView
        let size = text.boundingRect(with: CGSize(width: 150, height: 300), options: .usesLineFragmentOrigin, attributes: [.font: RegularFont(14)], context: nil).size
        let w = Int(size.width)
        let h = Int(size.height)//???
        hud.minSize = CGSize(width: w + 60, height: h + 30)
        
        let bgView = UIView(frame: CGRect(x: 5, y: 5, width: w + 30, height: h + 20))
        let titleLabel = UILabel(frame: CGRect(x: 15, y: 10, width: w+1, height: h+1))
        titleLabel.text = text
        titleLabel.numberOfLines = 0
        titleLabel.textAlignment = .center
        titleLabel.font = RegularFont(14)
        titleLabel.textColor = UIColor.rgbColorFromHex(0xF2F2F2)
        
//        // shadowCode
//        titleLabel.layer.shadowColor = UIColor(white: 1, alpha: 0.1).cgColor
////            UIColor(red: 0, green: 0, blue: 0, alpha: 0.08).cgColor
//        titleLabel.layer.shadowOffset = CGSize(width: 0, height: 0)
//        titleLabel.layer.shadowOpacity = 1
//        titleLabel.layer.shadowRadius = 6
        // fill
        bgView.backgroundColor = UIColor.rgbColorFromHex(0x808080)
        bgView.layer.cornerRadius = 5
        bgView.layer.masksToBounds = true
        hud.bezelView.addSubview(bgView)
        bgView.addSubview(titleLabel)
        
//        hud.bezelView.layer.shadowColor =  UIColor.rgbaColorFromHex(0x050000, alpha: 0.1).cgColor
//        UIColor(white: 0, alpha: 0.1).cgColor
//            UIColor(red: 0, green: 0, blue: 0, alpha: 0.08).cgColor
        /*
        hud.bezelView.layer.shadowOffset = CGSize(width: 0, height: 0)
        hud.bezelView.layer.shadowOpacity = 1
        hud.bezelView.layer.shadowRadius = 4
         */
//        hud.bezelView.layer.borderWidth = 0
//        hud.isSquare = true
        // 隐藏时候从父控件中移除
        hud.removeFromSuperViewOnHide = true
        hud.offset.y = yOffset
        if delay != 0 {
            hud.hide(animated: true, afterDelay: delay)
        }
        // 0.9秒之后再消失
        
    }
    
    class func showInView(_ text: String?, icon: String? = nil, view: UIView) {
//        guard let view: UIView = UIApplication.shared.keyWindow else { return }
        // 快速显示一个提示信息
        let hud = MBProgressHUD.showAdded(to: view, animated: true)
        // 允许背景可点击
        hud.isUserInteractionEnabled = false
        hud.label.text = text
        hud.label.font = UIFont.boldSystemFont(ofSize: 16)
        // 设置图片
        if let icon = icon {
            let image = UIImage(named: "MBProgressHUD.bundle/\(icon)")?.withRenderingMode(.alwaysTemplate)
            hud.customView = UIImageView(image: image)
        }
        // 再设置模式
        hud.mode = .customView
//        hud.isSquare = true
        // 隐藏时候从父控件中移除
        hud.removeFromSuperViewOnHide = true
        
        // 0.9秒之后再消失
        hud.hide(animated: true, afterDelay: 1.8)
    }
    
    
    public class func showSuccess(_ message: String?) {
        self.hide()
        self.showh_old(message, icon: "success")
    }
    public class func show(_ message: String?) {
        self.hide()
        self.showh_old(message)
    }
    /// 显示错误提示
    @objc public class func showError(_ message: String?) {
        self.hide()
        self.showh_old(message, icon: "error")
    }
    
    class func showh_old(_ text: String?, icon: String? = nil) {
        let view: UIView = KeyWindow
        // 快速显示一个提示信息
        let hud = MBProgressHUD.showAdded(to: view, animated: true)
        // 允许背景可点击
        hud.isUserInteractionEnabled = false
        hud.label.text = text
        hud.label.font = UIFont.boldSystemFont(ofSize: 16)
        // 设置图片
        if let icon = icon {
            let image = UIImage(named: "MBProgressHUD.bundle/\(icon)")?.withRenderingMode(.alwaysTemplate)
            hud.customView = UIImageView(image: image)
        }
        // 再设置模式
        hud.mode = .customView
//        hud.isSquare = true
        // 隐藏时候从父控件中移除
        hud.removeFromSuperViewOnHide = true
        
        // 0.9秒之后再消失
        hud.hide(animated: true, afterDelay: 1.8)
    }
    
    /// 显示菊花
    public class func showMessage(_ message: String?) -> MBProgressHUD? {
        hide()
        let view: UIView = KeyWindow
        // 快速显示一个提示信息
        let hud = MBProgressHUD.showAdded(to: view, animated: true)
        hud.isUserInteractionEnabled = false
        hud.label.text = message
        // 隐藏时候从父控件中移除
        hud.removeFromSuperViewOnHide = true
        // 需要蒙版效果

//        hud.backgroundView.style = .solidColor
        hud.backgroundView.color = UIColor(white: 0.0, alpha: 0.1)
        return hud
    }
    
    public class func showLoading(_ message: String?, icon: String) {
        hide(animated: false)
        let view: UIView = KeyWindow
        // 快速显示一个提示信息
        let hud = MBProgressHUD.showAdded(to: view, animated: true)
        // 允许背景可点击
        hud.isUserInteractionEnabled = false

        hud.bezelView.style = .solidColor
        
        hud.mode = .customView
        hud.minSize = CGSize(width: 100, height: 80)
        let bgView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 80))
        let imageView = UIImageView(frame: CGRect(x: 33, y: 13, width: 34, height: 34))
        imageView.image = UIImage(named: icon)
        let titleLabel = UILabel(frame: CGRect(x: 0, y: 55, width: 100, height: 17))
        titleLabel.text = message
        titleLabel.numberOfLines = 1
        titleLabel.textAlignment = .center
        titleLabel.font = RegularFont(11)
        titleLabel.textColor = UIColor.rgbColorFromHex(0x808080)
        
//        // shadowCode
//        titleLabel.layer.shadowColor = UIColor(white: 1, alpha: 0.1).cgColor
////            UIColor(red: 0, green: 0, blue: 0, alpha: 0.08).cgColor
//        titleLabel.layer.shadowOffset = CGSize(width: 0, height: 0)
//        titleLabel.layer.shadowOpacity = 1
//        titleLabel.layer.shadowRadius = 6
        // fill
        bgView.backgroundColor = UIColor.white
        bgView.layer.cornerRadius = 10
        bgView.layer.masksToBounds = true
        hud.bezelView.addSubview(bgView)
        bgView.addSubview(imageView)
        bgView.addSubview(titleLabel)
        
//        hud.bezelView.layer.shadowColor =  UIColor.rgbaColorFromHex(0x050000, alpha: 0.1).cgColor
//        UIColor(white: 0, alpha: 0.1).cgColor
//            UIColor(red: 0, green: 0, blue: 0, alpha: 0.08).cgColor
        /*
        hud.bezelView.layer.shadowOffset = CGSize(width: 0, height: 0)
        hud.bezelView.layer.shadowOpacity = 1
        hud.bezelView.layer.shadowRadius = 4
         */
//        hud.bezelView.layer.borderWidth = 0
//        hud.isSquare = true
        // 隐藏时候从父控件中移除
        hud.removeFromSuperViewOnHide = true
        hud.backgroundView.color = UIColor.black.withAlphaComponent(0.1)
//        hud.hide(animated: true, afterDelay: delay!)
        
    }
    

    
    class func hide(animated: Bool = true) {
        let view: UIView = KeyWindow
        self.hide(for: view, animated: true)
    }


}