ACPDownload 提供了一个关于下载过程的指示视图。此项目定义了 4 个状态:初始、不确定、运行和完成。图像是以编程方式定义的,因此您不需要担心设备中的分辨率。它还可以根据您的需求进行调整。
克隆仓库
$ git clone [email protected]:antoniocasero/ACPDownload.git
或者只需将 ACPDownload 文件夹拖到您的项目中。
将您的视图设置为 ACPDownloadView
,在 storyboard 中或在程序中。
此方法将定义视图的行为。状态的改变是手动定义的。
- (void)setIndicatorStatus:(ACPDownloadStatus)newStatus;
状态
ACPDownloadStatusNone
:初始状态。ACPDownloadStatusRunning
:当过程正在运行时,视图将显示进度指示器。ACPDownloadStatusIndeterminate
:不确定状态,当您的过程正在等待操作时。ACPDownloadStatusCompleted
:过程已正确完成。此方法定义了您的过程进度。
- (void)setProgress:(float)progress animated:(BOOL)animated
定义用户点击时的行为。(实现是可选的)。
- (void)setActionForTap:(ACPViewTappedBlock)blockAction;
替换不确定状态的默认动画。
- (void)setIndeterminateLayer:(id
替换运行状态的默认动画。
- (void)setProgressLayer:(id
替换每个状态的默认图像。
- (void)setImages:(id
我决定将自定义分为两部分:动画和图像。
所有图像都是使用 Core Graphics 创建的,它们将适应任何分辨率而不会丢失质量。
要定义自己的图像,创建自己的类,使其符合 ACPStaticImagesProtocol
协议,其中您定义每个状态中的图像。在代码中,您可以使用方法 -setStatusImages 将此对象注入到视图中。
ACPStaticImagesAlternative * myOwnImages = [ACPStaticImagesAlternative new];
[self.downloadIndicator setStatusImages:myOwnImages];
为了定义自己的动画(仅适用于运行和不确定状态),您可以使用符合 ACPLayerProtocol
协议的自己的类。
例如,为了在不确定状态下使用自己的动画,您可以注入自己动画类的实例,并使用 -setIndeterminateLayer 方法来替换默认动画。
ACPIndeterminateGoogleLayer * myAnimation = [ACPIndeterminateGoogleLayer new];
[layer updateColor:[UIColor blueColor]];
[self.downloadView setIndeterminateLayer:myAnimation];
如果您没有定义颜色,它将默认使用视图容器的 tintColor。
关于这方面的更多详细信息,请查看本仓库中的示例应用程序。
感谢 MMMaterialDesignSpinner 提供灵感。
任何贡献都受欢迎,只需创建一个具有您自己的图像或动画的 pull 请求即可!
ACPDownload
在 MIT 许可证下可用。有关更多信息请参阅 LICENSE 文件。