SVProgressHUD是什么?在iOS开发中,应该算是比较常用的一种HUD库,它可以在加载或操作过程中,让用户看到一个屏幕上的载入等待过程。

一、安装和导入SVProgressHUD

要使用SVProgressHUD需要使用CocoaPods导入依赖库。


platform :ios, '8.4'

target 'ProjectName' do
pod 'SVProgressHUD', '~> 2.2.5'
end

在项目中导入:


import SVProgressHUD

二、基本用法

SVProgressHUD有多种用法,这里先介绍一下最基本的用法。

显示进度:


SVProgressHUD.show()

显示带文字的进度提示:


SVProgressHUD.show(withStatus: "Loading...")

隐藏进度:


SVProgressHUD.dismiss()

三、进阶用法

1. 设置提示样式

SVProgressHUD提供了五种不同的样式和选项,可以根据需要自由设置。

以下是调用SVProgressHUD时可以设置的一些样式设置:


public enum SVProgressHUDStyle : UInt {
case light // 默认模式
case dark // 黑色背景模式
}

public enum SVProgressHUDMaskType : UInt {
case none // 没有遮罩
case clear // 不带颜色的遮罩
case black // 透明黑色遮罩
case gradient // 带有颜色渐变的遮罩
case custom // 自定义的遮罩,颜色由maskColor决定
}

public enum SVProgressHUDAnimationType : UInt {
case flat // 默认平面动画
case native // 系统动画 (MBProgressHUD 的旧API)
case custom // FadeIn / FadeOut 使用自定义动画 (一定要使用setAnimationImages:成为激活.)
}

public enum SVProgressHUDContentStyle : UInt {
case auto // 默认,可以根据成分设置样式;
case light // 黑色背景+灰色文本
case dark // 白色背景+白色文本
}

public func setDefaultMaskType(_ type: SVProgressHUDMaskType) // 改变遮罩样式
public func setBackgroundLayerColor(_ color: UIColor) // 修改背景层颜色
public func setDefaultStyle(_ style: SVProgressHUDStyle) // 进度条在前、消息在后。
public func setMinimumSize(_ minimumSize: CGSize) // 设置最小尺寸 默认为0,不限制最小值
public func setRingThickness(_ thickness: CGFloat) // 设置指示器环厚度(当在ring或customContent时有效)
public func setRingRadius(_ radius: CGFloat) // 设置指示器环半径
public func setHapticsEnabled(_ enabled: Bool) // 是否开启触觉反馈

2. 设置进度提示框的位置和宽高

您可以设置SVProgressHUD的位置和宽高来满足您所需的任何需求。可以通过以下方法实现这一点。

设置HUD高度和宽度:


SVProgressHUD.setDefaultMaskType(.black) // 设置背景颜色
SVProgressHUD.setMinimumSize(CGSize(width: 300, height: 200)) // 设置HUD的宽高

通过设置HUD的坐标位置,可以调整位置,这里将HUD移动到屏幕的底部中心。


SVProgressHUD.setDefaultMaskType(.black) // 设置背景颜色
SVProgressHUD.setMinimumSize(CGSize(width: 300, height: 200)) // 设置HUD的宽高
SVProgressHUD.setDefaultAnimationType(.flat) // 设置动画类型
SVProgressHUD.setDefaultStyle(.dark) // 设置样式
SVProgressHUD.setDefaultContentStyle(.dark) // 设置消息文字颜色
SVProgressHUD.setMinimumDismissTimeInterval(2) // HUD停留时间
SVProgressHUD.showSuccess(withStatus: "Success")

3. 自定义内容

除了默认的加载动画,SVProgressHUD还提供了一种自定义内容的选项。这就是为了使创建者有机会以自己的想法定制他们的HUD。处理这个的方法是自定义View的contentView属性。

下面是如何制作自定义内容的示例:


let content = UIView(frame: CGRect(x: 0, y: 0, width: 150, height: 100))
content.backgroundColor = .white // 设置自定义视图背景颜色
content.layer.cornerRadius = 5 // 设置自定义视图边角
let imageView = UIImageView(image: UIImage(named: "example")) // 加载图片视图
imageView.contentMode = .scaleAspectFit
imageView.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
content.addSubview(imageView)
SVProgressHUD.setCustomContentView(content) // 设置自定义视图
SVProgressHUD.show()

4. 更多高级用法

此外,SVProgressHUD还提供了其他一些有用的功能,例如HUD消失后执行的位于主线程的闭包、HUD中的文本细节、背景颜色和边角度、HUD在哪个窗口中显示等等。


SVProgressHUD.dismiss(withDelay: 2.0) // 两秒后消失

显示进度HUD的同时,可在HUD上面显示文本:


SVProgressHUD.showProgress(0.5, status: "请稍候...") // 显示带有进度条的文本HUD

设置HUD背景颜色和内容消息字体颜色:


// 设置进度条条的颜色
SVProgressHUD.setDefaultStyle(.custom)
SVProgressHUD.setDefaultMaskType(.none)
SVProgressHUD.setBackgroundColor(UIColor.white)
SVProgressHUD.setForegroundColor(UIColor.orange)

四、总结

本文介绍了SVProgressHUD的基本用法、进阶用法以及更多高级用法。通过本文的阅读可以让开发者更加了解如何使用SVProgressHUD优化自己的代码,为用户提供更好的体验。