ProgressMaskView for iOS
进度遮罩视图是一种覆盖整个屏幕的视图,用于禁用任何用户交互,包括标签栏项和导航栏按钮。它显示活动指示器和进度。用户可以知道任何交互都被禁用,需要等待。活动移动和颜色变化非常美观。
基本上,您不应使用它。禁用用户交互不是现代应用的好主意。然而,在某些情况下,这是必要的。我创建了这个视图,用于备份功能和恢复功能,因为在备份或从备份数据中恢复时无法更改任何数据。这个视图没有取消按钮。如果您的功能可以取消,则不应禁用导航栏或标签栏。您应非常有限地使用此功能。
截图
功能
此视图具有
- 圆形活动视图。
- 圆形进度视图。
- 中心标签。
- 透明黑色效果覆盖整个屏幕。
这是
- 轻盈。
- 支持动态类型。
- 适配所有屏幕尺寸。
- 易于使用。
动画在 CALayer 上实现,轻量级。
如何使用
建议从代码中使用此视图。此视图会自动在视图层次结构的开始处插入自己,并在结束时移除它。
开始
- 创建一个
ProgressMaskView
实例。 - 将您的UIViewController传递给实例的
install(to:)
方法。 - 调用
showIn()
方法以显示进度视图。
更新:4. 像UIProgressView一样指定progress
属性以更新UI。
结束:5. 在结束时调用hideIn(second:uninstall)
方法。
这就完成了。此视图将自动在视图层次结构中决定合适的插入位置并插入,设置所有约束,并开始动画。最后,该视图将从树中移除,以便可以释放它。
如果您愿意,可以使用Interface builder。但我建议使用上面的代码方法,因为它更简单。
自定义
- 更改颜色。
- 更改半径和厚度。
- 更改活动旋转速度。
安装
- 获取所有代码。
- 将ProgressMaskView.xcodeproj添加到您的项目中。
- 在项目 - 目标 - 通用中嵌入式二进制文件部分内添加ProgressMaskView.framework。
import ProgressMaskView
将使您能够使用ProgressMaskView。
示例代码
开始
在你的视图控制器中;
import ProgressMaskView
...
private var maskView: ProgressMaskView?
...
@IBAction func onButtonTap(_ sender: Any) {
guard maskView == nil else { return }
maskView = ProgressMaskView()
maskView?.title = "Processing..."
maskView?.install(to: self)
maskView?.showIn(second: 1.0)
startYourProcess()
}
设置进度
处理过程中,将进度值设置为ProgressMaskView以更新显示。
maskView?.progress = progressValue // 0.0 - 1.0
结束
最后,调用hideIn
方法来丢弃该视图。
maskView?.hideIn(second: 1.0, uninstall: true)
maskView = nil
如果卸载为false,进度遮罩视图会变为隐藏,但仍然保留在视图分层结构中。您可以通过调用show(in:)
方法来重用它。
许可
MIT许可
感谢
欢迎任何评论、请求和贡献。