MRProgress 0.8.3

MRProgress 0.8.3

测试已测试
Lang语言 Obj-CObjective C
许可协议 MIT
发布上次发布2015年12月

Marius Rackwitz 维护。



MRProgress 是一组即插即用组件,在工作线程中执行后台操作时,会显示一个 半透明的层和一个带有指示器和/或标签的模糊框视图。

  • 面向组件:您不需要使用所有组件或 MRProgressOverlayView。您可以仅使用自定义活动指示器或进度视图。
  • 可配置:所有组件都实现了 tintColor。
  • 可定制:您可以替换提供的模糊实现,并链接到您在其他应用程序的其他部分可能已经使用的自己的实现。或者如果您更喜欢苹果公司的实现,简单地将 UIToolbar 的图层 投入其中。 (当前的模糊实现是根据 WWDC 2013 的示例代码提供的。)
  • 可重用:代码被分成小块的、可重用的部分。
  • 文档齐全:您可以安装并打开 Appledoc 文档。
  • 集成:它提供了对 AFNetworking 的集成。
  • 可访问:它为 UIAccessibility 提供了标签、特质和事件。

组件

MRProgressOverlayView 中使用的组件可以单独使用。提供的示例应用程序演示了如何使用它们。

MRProgressOverlayView

  • 支持不同的模式
  • 动画显示和隐藏
  • 模糊背景
  • 带有 UIMotionEffects 的倾斜,如 UIAlertView
  • 支持多行标题标签文本

MRCircularProgressView

  • 可以更改着色色
  • 类似于 AppStore 的圆形进度视图
  • 可以显示一个停止按钮
  • 使用 CABasicAnimation 进行动画处理
  • 百分比标签的更改通过 NSTimer 动画

MRNavigationBarProgressView

  • UINavigationController 中显示进度视图
  • 挂钩 UINavigationControllerDelegate 并在推送或弹出时自动删除
  • 可以在 UINavigationBarUIToolbar 中使用

MRCheckmarkIconViewMRCrossIconView

  • 可以更改着色色
  • 可伸缩
  • 可动画化
  • CAShapeLayer 支撑

MRActivityIndicatorView

  • 可以更改着色色
  • 具有与 UIActivityIndicatorView 相同的 API
  • 可以显示一个停止按钮
  • 使用 CABasicAnimation 进行动画处理

安装

源代码文件

  1. 下载最新代码版本latest code version或将仓库作为git子模块添加到您的git跟踪项目中。
  2. 将存档中的src目录从您的项目导航器拖放到项目文件夹。如果在项目外部提取了代码存档,确保选择复制项目
  3. 在需要使用任何组件的位置使用 #import "MRProgress.h" 导入MRProgress,或者将其包括在bridging header中以在Swift中使用它。

静态库

  1. MRProgress.xcodeproj拖放到您的项目导航器中。
  2. 选择您的目标并转到构建阶段标签。在链接二进制以库部分,点击添加按钮。在表单中查找并添加libMRProgress.a。
  3. 将Target MRProgress添加到您的目标依赖列表。
  4. 在Objective-C中使用 import <MRProgress/MRProgress.h> 或从Swift中使用 import MRProgress 来导入目标以使用组件。

要求

  • Xcode 5
  • iOS 7
  • ARC
  • 框架
    • QuartzCore
    • CoreGraphics
    • Accelerate

用法

查看提供的演示应用以获取很多组件的使用示例。同时确保查看Cocoadocs上MRProgress的文档

基本使用

  1. 将以下导入添加到文件顶部或Prefix header

    // If used with Cocoapods
    #import "MRProgress.h"
    // If used as Framework
    #import <MRProgress/MRProgress.h>
  2. 使用以下任一方式显示层叠视图

    // 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];
  3. 任务完成后简单消失

    // Dismiss
    [MRProgressOverlayView dismissOverlayForView:self.view animated:YES];

AFNetworking

MRProgress提供了对网络库AFNetworking的集成。

  1. 将以下额外的行包含到您的Podfile中

    pod 'MRProgress/AFNetworking'
  2. 导入您想要使用的组件的适当分类头文件

    #import <MRProgress/MRProgressOverlayView+AFNetworking.h>
  3. 现在只需像平常一样设置任务/操作,并使用以下举例来绑定到执行状态和进度。

    // 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'及其所有子类。有关更多示例,请确保查看示例应用

模式

名称 (MRProgressOverlayView<...>) 截图 描述
不确定 使用圆形的活动指示器视图显示进度状态。这是默认模式。
不确定Circular 使用类似于饼图的进度视图显示进度。
不确定HorizontalBar 使用水平进度条显示进度。
不确定Small 主要展示一个标签。使用小活动指示器显示进度。
不确定SmallDefault 主要展示一个标签。使用小活动指示器显示进度。
勾选标记 展示一个勾选标记。
叉号 展示一个叉号。

鸣谢

MRProgress的API受到了MBProgressHUD项目的启发。

水族馆图片是从Jag Cesar的模糊实现中借鉴的

您可以在Twitter上找到我 @mrackwitz。

许可

版权所有(C)2013 Marius Rackwitz [email protected]

麻省理工学院许可证

特此授予任何获得本软件及其相关文档文件副本(以下简称“软件”)的人免费使用软件的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许获得软件的人这样做,但须遵守以下条件:

上述版权声明和本许可证声明应包含在软件的副本或其重要部分中。

软件按“现状”提供,不提供任何形式的保证,明示或暗示,包括但不限于适用于特定目的的适销性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同行为、侵权行为或其他行为中产生的,也与软件本身、使用或与软件的其他操作有关。