MSProgressView
一个简单的圆形进度指示器,具有完成、成功和错误反馈
注意: MSProgressView 使用 Swift 5 编写,这要求 Xcode 10.2+。
设置
手动设置
- 要使用 MSProgressView,请下载
MSProgressView.swift
并将其拖入 Xcode。 - 就这样。如果你使用 Objective-C 编写项目,你需要在你的
.m
文件中导入XXX-Swift.h
,其中XXX
是你的项目名称。
CocoaPods
MSProgressView
可以在CocoaPods中找到,名为MSCircularProgressView
Swift
-- AutoLayout --
let progressView = MSProgressView()
progressView.start()
view.addSubview(progressView)
NSLayoutConstraint.activate([...])
...
--------------------
-- Non-AutoLayout --
let progressView = MSProgressView(frame: CGRect(x: ..., y: ..., width: ..., height: ...))
progressView.start()
view.addSubview(progressView)
...
###Objective-C
-- AutoLayout --
MSProgressView *progressView = [[MSProgressView alloc] init];
[progressView start];
[view addSubview: progressView];
[NSLayoutConstraint activate: @[...]];
...
--------------------
-- Non AutoLayout --
MSProgressView *progressView = [[MSProgressView alloc] initWithFrame: CGRectMake(..., ..., ..., ...)];
[progressView start];
[self.view addSubview: progressView];
...
注意: MSProgressView被标记为@IBDesignable。您也可以在Interface Builder中初始化,并自定义以下一些选项
选项
MSProgressView完全可定制。为了快速设置,提供了两个变量供您使用
barColor
进度条的颜色。如果您想动画化这个变化,请使用setBar(color:, animated:)
默认是white
barWidth
进度条的宽度。如果您想动画化这个变化,请使用setBar(width:, animated:)
默认是5.0
@IBInspectable
,可以在Interface Builder中更改
之前的选项被标记为progressObject
您可以将一个 Progress
对象附加到 MSProgressView
当您更新 totalUnitCount
和/或 completedUnitCount
时,MSProgressView
会自动更新其显示
- 重要:如果
isIndeterminate
评估为 true,则MSProgressView
不会响应属性变化而更新
值
currentProgress
当前视图的进度。(只读)
static completionAnimationTime
调用 finish(_:)
时动画运行所需的时间。使用此值来确定延迟执行任何可能与之重叠的其他动画多长时间。(只读)
static preferredHumanDelay
附加到 completionAnimationTime
末尾的小缓冲,以允许在所有动画完成后查看最终状态.(只读)
方法
start()
将圆形缺口条围绕圆形无限旋转。用于不确定加载时间的情况
如果调用了以下任何一种方法,则此方法不执行任何操作
setProgress(_:animated:)
finish(_:animated:)
stop()
停止在无限圆形上旋转圆形缺口条。使用此方法暂停旋转
如果调用了以下任何一种方法,则此方法不执行任何操作
start()
setProgress(_:animated:)
finish(_:animated:)
finish(_:)
立即终止进度视图的加载状态,并响应指定的完成状态
状态变化是动画的。您可以使用类变量 completionAnimationTime
来获取动画执行中任何可能重叠的其他动画的延迟时间间隔
completion
: 进度视图应反映的完成状态。有关更多信息,请参阅MSProgressViewCompletion
的文档animated
: 是否显示应动画化
reset()
立即终止进度视图的状态,并将其重置为其原始状态。
调用 reset
后,您可以调用任何其他方法(例如重启下载)。重置不是动画化进行
- 注意:如果提供了
progressObject
,则 MSProgressView 不会 丢失对它的附件
设置器
setBar(color:, animated:)
设置旋转和进度条颜色
color
- 设置进度条的颜色animated
- 是否应该以动画效果改变颜色
setBar(width:, animated:)
设置旋转和进度条宽度
width
- 设置进度条的宽度animated
- 是否应该以动画效果改变宽度
setProgress(_:animated:)
在视图中显示增长的圆形进度条。用于确定加载时间
如果进度视图正在显示不确定的加载,圆形进度条将被移除并替换
如果调用了`finish(_:animated:)`,此方法不执行任何操作
newProgress
: 视图应显示的总进度animated
: 是否应该以动画效果改变进度。默认值为`true`
枚举
MSProgressViewCompletion
指示完成类型的常量
success
显示一个带勾选的绿色圆圈
failure
显示一个带“✕”的红圈
变更日志
1.2.0
- 改进了
Progress
对象跟踪 - 优化成功和失败的色彩,使对比度更低
- 现在从父视图中移除
MSProgressView
将自动停止任何动画 - 您现在可以在任何调用中禁用动画(除非使用
Progress
对象) MSProgressView
现在可以被子类化- 将进度增加动画移动到使用
UIViewPropertyAnimator
。这提供可中断的进度改变,之前会导致令人不快的动画跳跃