MRProgress 是一组即插即用组件,在工作线程中执行后台操作时,会显示一个 半透明的层和一个带有指示器和/或标签的模糊框视图。
MRProgressOverlayView
。您可以仅使用自定义活动指示器或进度视图。MRProgressOverlayView
中使用的组件可以单独使用。提供的示例应用程序演示了如何使用它们。
MRProgressOverlayView
UIAlertView
MRCircularProgressView
CABasicAnimation
进行动画处理NSTimer
动画MRNavigationBarProgressView
UINavigationController
中显示进度视图UINavigationControllerDelegate
并在推送或弹出时自动删除UINavigationBar
或 UIToolbar
中使用MRCheckmarkIconView
和 MRCrossIconView
CAShapeLayer
支撑MRActivityIndicatorView
UIActivityIndicatorView
相同的 APICABasicAnimation
进行动画处理 #import "MRProgress.h"
导入MRProgress,或者将其包括在bridging header中以在Swift中使用它。 import <MRProgress/MRProgress.h>
或从Swift中使用 import MRProgress
来导入目标以使用组件。查看提供的演示应用以获取很多组件的使用示例。同时确保查看Cocoadocs上MRProgress的文档。
将以下导入添加到文件顶部或Prefix header
// If used with Cocoapods
#import "MRProgress.h"
// If used as Framework
#import <MRProgress/MRProgress.h>
使用以下任一方式显示层叠视图
// Block whole window
[MRProgressOverlayView showOverlayAddedTo:self.window animated:YES];
// Block only the navigation controller
[MRProgressOverlayView showOverlayAddedTo:self.navigationController.view animated:YES];
// Block only the view
[MRProgressOverlayView showOverlayAddedTo:self.view animated:YES];
// Block a custom view
[MRProgressOverlayView showOverlayAddedTo:self.imageView animated:YES];
任务完成后简单消失
// Dismiss
[MRProgressOverlayView dismissOverlayForView:self.view animated:YES];
MRProgress提供了对网络库AFNetworking的集成。
将以下额外的行包含到您的Podfile中
pod 'MRProgress/AFNetworking'
导入您想要使用的组件的适当分类头文件
#import <MRProgress/MRProgressOverlayView+AFNetworking.h>
现在只需像平常一样设置任务/操作,并使用以下举例来绑定到执行状态和进度。
// Init the progress overlay as usual
MRProgressOverlayView *overlayView = [MRProgressOverlayView showOverlayAddedTo:self.view animated:YES];
// The following line will do these things automatically:
// * Set mode to determinate when a download or upload is in progress
// * Set animated progress of the download or upload
// * Show a checkmark or cross pane at the end of the progress
[overlayView setModeAndProgressWithStateOfTask:task];
// Allows the user to cancel the task by using the provided stop button.
// If you use that, make sure that you handle the error code, which will be
// delivered to the failure block of the task like shown below:
//
// if ([error.domain isEqualToString:NSURLErrorDomain] && error.code == NSURLErrorCancelled) {
// NSLog(@"Task was cancelled by user.");
// return;
// }
//
[overlayView setStopBlockForTask:task];
// If you use the activity indicator directly
[self.activityIndicatorView setAnimatingWithStateOfTask:task];
// If you use one of the progress views directly
[self.circularProgressView setProgressWithUploadProgressOfTask:downloadTask animated:YES]; // for uploads
[self.circularProgressView setProgressWithDownloadProgressOfTask:downloadTask animated:YES]; // for downloads
[[MRNavigationBarProgressView progressViewForNavigationController:self.navigationController]
setProgressWithDownloadProgressOfTask:downloadTask animated:YES];
所有方法都适用于'NSURLSessionTask'、'AFURLConnectionOperation'及其所有子类。有关更多示例,请确保查看示例应用。
MRProgress的API受到了MBProgressHUD项目的启发。
水族馆图片是从Jag Cesar的模糊实现中借鉴的。
您可以在Twitter上找到我 @mrackwitz。
版权所有(C)2013 Marius Rackwitz [email protected]
麻省理工学院许可证
特此授予任何获得本软件及其相关文档文件副本(以下简称“软件”)的人免费使用软件的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许获得软件的人这样做,但须遵守以下条件:
上述版权声明和本许可证声明应包含在软件的副本或其重要部分中。
软件按“现状”提供,不提供任何形式的保证,明示或暗示,包括但不限于适用于特定目的的适销性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同行为、侵权行为或其他行为中产生的,也与软件本身、使用或与软件的其他操作有关。