WisdomHUD 0.3.5

WisdomHUD 0.3.5

“tangjianfeng” 维护。



WisdomHUD 0.3.5

  • 作者:
  • tangjianfeng

WisdomHUD

https://github.com/tangjianfengVS/WisdomHUD.git

'WisdomHUD' 是多种样式的 HUD 弹框指示器 SDK。

'WisdomHUD' 系统最低支持 iOS 9.0 版本,用 Swift 5.0 编写,兼容 OC 类调用使用。

'WisdomHUD' 支持全局/单点 HUD 内部属性动态调整,支持视图聚焦显示设置。

'WisdomHUD' 支持超时/延迟时间设置,支持超时/延迟结束事件回调处理。

'WisdomHUD' 支持多种 Loading/Progress 加载样式,以及成功/错误/警告/文本提示样式,支持设置提示动画。

'WisdomHUD' 图标通过绘制实现,并添加了图标缓存,避免了重复绘制任务,这也是 HUD SDK 实现高性能的唯一途径。

'WisdomHUD' 如果制作成静态库使用,因为没有资源文件,不需要考虑资源加载,保证了安全。

'WisdomHUD' API 调用方便/灵活,后期会进行更新和迭代,推荐使用。

WisdomHUD 是一款多种样式的 HUD 弹框指示器 SDK。

WisdomHUD 系统最低支持 iOS 9.0 版本,由 Swift 5.0 编写,兼容 OC 类调用使用。

WisdomHUD 支持全局/单点 HUD 内部属性动态调整,支持视图聚焦显示设置。

WisdomHUD 支持超时/延迟时间设置,支持超时/延迟结束事件回调处理。

WisdomHUD 支持多种 Loading/Progress 加载样式,和成功/错误/警告/文本提示样式,支持设置提示动画。

WisdomHUD 图标通过绘制实现,且加入了图标缓存,避免了重复绘制任务,这也是 HUD SDK 高性能必经之路。

WisdomHUD 如果制作成静态库使用,因没有资源文件,不需要考虑资源加载,保证了安全。

WisdomHUD API 调用方便/灵活,后期会更新迭代,推荐使用。

image

(1):WisdomHUD 所有样式支持:

/* HUD Style */

public enum WisdomHUDStyle: CaseIterable {

case succes   // image + text

case error    // image + text

case warning  // image + text

case loading  // image + text
    
case progress // image + text

case text     // text

}

(2):WisdomHUD 加载样式支持:

/* HUD Loading Style */

@objc public enum WisdomLoadingStyle: NSInteger, CaseIterable {

case system=0     // 系统菊花

case rotate       // 经典旋圈

case progressArc  // 缩进弧

case tadpoleArc   // 蝌蚪弧

case chaseBall    // 追逐球

case pulseBall    // 脉冲球

case pulseShape   // 脉冲形状

}

(3):WisdomHUD 加载样式支持:

/* HUD Progress Style */

@objc public enum WisdomProgressStyle: NSInteger, CaseIterable {

case circle=0  // 中心圆

}

(4):WisdomHUD BarStyle 背景样式支持:

/* HUD Scene Bar Style */

@objc public enum WisdomSceneBarStyle: NSInteger, CaseIterable {

case dark=0    // 黑色

case light     // 白色

case hide      // 隐藏

}

(5):WisdomHUD TextPlace 位置样式支持:

/* HUD Text Place Style */

@objc public enum WisdomTextPlaceStyle: NSInteger, CaseIterable {

case center=0  // 中心

case bottom    // 底部

}

(6):WisdomHUD Context Info 信息调整:

/* HUD Text Context Set Info */

@objc public protocol WisdomHUDBaseContextable {

// 文字大小调整

@discardableResult

@objc func setTextFont(font: UIFont)->Self

// 文字颜色调整

@discardableResult

@objc func setTextColor(color: UIColor)->Self

}

(7):WisdomHUD Context Focusing 聚焦设置(去除遮盖视图,允许底部视图交互,Loading HUD不支持):

/* HUD 文本上下文设置焦点 */

@objc 公共协议 WisdomHUDContextable: WisdomHUDBaseContextable {

@discardableResult

@objc func setFocusing()->Self

}

(8):WisdomHUD的 加载上下文超时设置(超时时间到了 加载 HUD 回调结束,并自动移除):

/* HUD 文本上下文设置加载超时 */

@objc 公共协议 WisdomHUDLoadingContextable: WisdomHUDBaseContextable {

@discardableResult

@objc func setTimeout(time: TimeInterval, timeoutClosure: @escaping ((TimeInterval)->()))->Self

}

(9):WisdomHUD的 全局属性设置:

/* HUD 设置功能 */

扩展示例 WisdomHUD: WisdomHUDSettingable {

// MARK: HUD Set Loading Style

@objc public static func setLoadingStyle(loadingStyle: WisdomLoadingStyle) {

    WisdomHUDOperate.setLoadingStyle(loadingStyle: loadingStyle)
}

// MARK: HUD Set Scene Bar Style

@objc public static func setSceneBarStyle(sceneBarStyle: WisdomSceneBarStyle) {

    WisdomHUDOperate.setSceneBarStyle(sceneBarStyle: sceneBarStyle)
}

// MARK: HUD Set Display Delay

@objc public static func setDisplayDelay(delayTime: CGFloat) {

    WisdomHUDOperate.setDisplayDelay(delayTime: delayTime)
}

// MARK: HUD Set Cover BackgColor

@objc public static func setCoverBackgColor(backgColor: UIColor) {

    WisdomHUDOperate.setCoverBackgColor(backgColor: backgColor)
}

}

(10):WisdomHUD的使用示例:

let style: WisdomHUDStyle = WisdomHUDStyle.allCases[indexPath.section]

switch style {

case .succes:  // 成功样式:延迟时间设置

    WisdomHUD.showSuccess(text: "加载成功", barStyle: sceneBarStyle, inSupView: view, delays: 3) { interval in
    
        print("3秒显示结束")
            
    }
        
case .error:  // 失败样式:延迟时间设置/指定视图添加/设置聚焦/设置文字颜色和大小

    WisdomHUD.showError(text: "加载失败", barStyle: sceneBarStyle, inSupView: view, delays: 3) { interval in
            
        print("3秒显示结束")
            
    }.setFocusing().setTextColor(color: .red).setTextFont(font: UIFont.boldSystemFont(ofSize: 14))
        
case .warning: // 警告样式:延迟时间设置/指定视图添加/设置聚焦

    WisdomHUD.showWarning(text: "加载警告", barStyle: sceneBarStyle, inSupView: view, delays: 3) { interval in
    
        print("3秒显示结束")
        
    }.setFocusing()
        
case .loading: // 加载样式:异步加载/超时时间设置

    if let loadingStyle = WisdomLoadingStyle(rawValue: indexPath.row) {
    
        DispatchQueue.global().async {
                
            WisdomHUD.showLoading(text: "正在加载中",
            
                                  loadingStyle: loadingStyle,
                                  
                                  barStyle: sceneBarStyle).setTimeout(time: 8) { _ in
                    
                WisdomHUD.showTextBottom(text: "加载超时,稍后重试",
                
                                             barStyle: sceneBarStyle,
                                             
                                             delays: 5, delayClosure: nil).setFocusing()
                    
            }
                
        }

    }
    
case .text: // 文字样式

    switch WisdomTextPlaceStyle.allCases[indexPath.row] {
    
    case .center: // 中心文字样式:延迟时间设置/指定视图添加/设置聚焦/设置文字颜色和大小
    
        WisdomHUD.showTextCenter(text: "inSupView 添加失败,请稍后重试", barStyle: sceneBarStyle, inSupView: view, delays: 3) { interval in
        
            print("3秒显示结束")
            
        }.setFocusing().setTextColor(color: .blue).setTextFont(font: UIFont.boldSystemFont(ofSize: 14))
            
    case .bottom: // 底部文字样式:延迟时间设置/指定视图添加/设置聚焦
    
        WisdomHUD.showTextBottom(text: "inSupView 添加失败,请稍后重试,添加失败,请稍后重试,添加失败,请稍后重试,添加失败,请稍后重试",
        
                                 barStyle: sceneBarStyle,
                                     
                                 inSupView: view,
                                 
                                 delays: 3) { interval in
                                 
            print("3秒显示结束")
            
        }.setFocusing()
            
    default: break
    
    }
    
case .progress: // 进度样式:设置进度颜色/设置进度文字颜色/设置进度值/完成移除

    let contextable = WisdomHUD.showProgress(text: "上传文件").setProgressColor(color: .systemPink).setProgressTextColor(color: .systemPink)
    
    let list: [UInt] = [1,2,3,4,5,6,7,8,9,10]
    
    for item in list {
    
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+TimeInterval(item)) {
        
            contextable.setProgressValue(value: item*10)
            
            if item*10 >= 100 {
                    
                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+5) {
                
                    WisdomHUD.dismiss()
                    
                }
                
            }
            
        }
        
    }
    
}