ProgressMaskView 0.2.0

ProgressMaskView 0.2.0

eytyet 维护。




  • eytyet

ProgressMaskView for iOS

进度遮罩视图是一种覆盖整个屏幕的视图,用于禁用任何用户交互,包括标签栏项和导航栏按钮。它显示活动指示器和进度。用户可以知道任何交互都被禁用,需要等待。活动移动和颜色变化非常美观。

基本上,您不应使用它。禁用用户交互不是现代应用的好主意。然而,在某些情况下,这是必要的。我创建了这个视图,用于备份功能和恢复功能,因为在备份或从备份数据中恢复时无法更改任何数据。这个视图没有取消按钮。如果您的功能可以取消,则不应禁用导航栏或标签栏。您应非常有限地使用此功能。

截图

Screen shot 1 Screen shot 2 Screen shot 3

功能

此视图具有

  • 圆形活动视图。
  • 圆形进度视图。
  • 中心标签。
  • 透明黑色效果覆盖整个屏幕。

这是

  • 轻盈。
  • 支持动态类型。
  • 适配所有屏幕尺寸。
  • 易于使用。

动画在 CALayer 上实现,轻量级。

如何使用

建议从代码中使用此视图。此视图会自动在视图层次结构的开始处插入自己,并在结束时移除它。

开始

  1. 创建一个ProgressMaskView实例。
  2. 将您的UIViewController传递给实例的install(to:)方法。
  3. 调用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许可

感谢

欢迎任何评论、请求和贡献。