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 调用方便/灵活,后期会更新迭代,推荐使用。
(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()
}
}
}
}
}