SWRevealViewController 2.3.0

SWRevealViewController 2.3.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布时间最新版本2014年12月

John-Lluch 维护。



  • 作者:
  • John Lluch Zorrilla

这是一个 UIViewController 子类,用于显示位于前端控制器之后的后端(左侧和/或右侧)视图控制器,受 Facebook 应用程序启发,并且做得很好!

注意(版本 2.3)

  • 此版本修复了旧版本中的一个错误,该错误在某些情况下会导致类初始化不正确。
  • 已从报告中删除旧的 RevealControllerStoryboardExample,因为它已弃用,请查看最新的 RevealControllerStoryboardExample2。

注意(升级到版本 2.1)

此版本采用了对故事板支持的新方法。

  • 现在有两个不同的转场类,分别是 SWRevealViewControllerSegueSetController 和 SWRevealViewControllerSeguePushController。前者用于通过故事板设置 revealViewController 的初始控制器。后者用于以动画效果将控制器推送到前端。旧的 SWRevealViewControllerSegue 仍然有效,但已弃用。
  • 新增了一个用于演示新转场类的样例故事板,RevealControllerStoryBoardExample2。故事板设计增加了更多责任,同时简化了 SWRevealViewController 的实现。

重要说明:升级到版本 2.0

在版本 2.0 中进行了多项更改,可能会破坏您的现有项目。如果您还没有准备好升级,可以继续使用以前的版本。2.0.0 版本之前的最后一个提交被标记为 v1.1.3。接下来描述影响 2.0.0 版本的更改。

  • 不支持 iOS6 及更早版本。此版本只能在 iOS7 上运行

  • setFrontViewController:animated: 方法不再像以前那样执行。特别是,它不会执行完整的揭示动画。取而代之的是,它只是在可选动画的情况下替换当前位置的前端视图控制器。使用新的 pushFrontViewController:animated: 方法代替对 setFrontViewController:animated: 的先前调用。

  • 已添加对子控制器动画替换的支持。现在,所有以下方法都提供了动画版本的:setRearViewControllersetFrontViewController 以及 setRightViewController。默认动画效果是交叉溶解。您可以使用 replaceViewAnimationDuration 设置视图控制器替换动画的持续时间。

  • 您可以通过提供实现 UIViewControllerAnimatedTransitioning 协议的对象来创建自定义的视图控制器转换动画。

  • 添加了以下新的代理方法

    - (void)revealController:(SWRevealViewController *)revealController willAddViewController:(UIViewController *)viewController forOperation:(SWRevealControllerOperation)operation animated:(BOOL)animated;
    - (void)revealController:(SWRevealViewController *)revealController didAddViewController:(UIViewController *)viewController forOperation:(SWRevealControllerOperation)operation animated:(BOOL)animated;
    - (id<UIViewControllerAnimatedTransitioning>)revealController:(SWRevealViewController *)revealController animationControllerForOperation:(SWRevealControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC;
  • 示例已被更新,以展示新特性。所有对setFrontViewController:animated:的动画调用都已被pushFrontViewController:animated:调用所取代。RevealControllerProject示例实现了一个自定义动画控制器(UIViewControllerAnimatedTransitioning),在替换rightViewController时执行向上滑动过渡。RevealControllerProject3示例使用默认的交叉溶解动画来设置前台控制器。

特性

  • 使用视图控制器包含实现Reveal视图控制器。
  • 通过UIViewControllerAnimatedTransitioning协议支持自定义viewController过渡动画。
  • API比UINavigationController更易于使用。
  • 支持任意组合的左/右后置控制器。
  • 正确处理其子控制器上的外观方法,让您能够依赖。
  • 正确处理旋转。
  • 可以作为其他控制器的子视图控制器嵌入,或作为rootViewController部署。
  • 与任何子视图控制器或父控制器配合良好。
  • 可以作为自身子级部署,以创建类似级联的分层界面。
  • 无缝集成拖动手势识别,行为流畅得如同绸缎。
  • 在UIViewController上提供了类别方法revealViewController,以获取任何子控制器的父SWRevealViewController,类似于UIViewController的属性navigationController
  • 提供全面的委托方法,以获取控制器的完整状态,实现自定义行为。
  • 轻量级、清洁、易读、自动文档化的代码,您将享受在项目中使用它。

YouTube视频

http://youtu.be/8qYxGRJ3ZdA

示例

仓库包括以下示例项目,可以用作模板或测试目的

  • RevealControllerProject.xcodeproj
  • RevealControllerProject2.xcodeproj
  • RevealControllerProject3.xcodeproj
  • RevealControllerStoryboardExample.xcodeproj

Image                     Image

需求

  • iOS 7.0或更高版本。
  • ARC内存管理。

使用方法

SWRevealViewController仓库尝试提供一个更新的cocoaPods文件和一致的标记版本,但它并没有在cocoapods-specs仓库中积极更新。

安装它的最简单方法是将以下内容复制到您的项目中

  • SWRevealViewController.h
  • SWRevealViewController.m

在您的项目中

  • 初始化一个SWRevealViewController的实例,传入一个“后部”和“前端”视图控制器。
  • 可选地添加一个“右侧”视图控制器或传入nil作为“后部”视图控制器。
  • 在代码中使用SWRevealViewController实例的方式与使用任何视图控制器相同。
  • 将其部署为应用程序窗口的根视图控制器,或作为其他包含控制器的子控制器。
  • 获取SWRevealViewController提供的panGestureRecognized和tapGestureRecognizer。您可以保留默认行为,也可以将它们添加到“前端”视图控制器上的合适视图。例如,您可以在前端控制器的viewDidLoad方法中将panGestureRecognizer添加到navigationBar。
  • 在任何时候,均可通过编程或基于用户行为,有或无动画地揭露、隐藏“后端”或“右侧”视图或替换任何视图控制器。

基本API描述

初始化SWRevealViewController

- (id)initWithRearViewController:(UIViewController *)rearViewController frontViewController:(UIViewController *)frontViewController;

设置右侧视图控制器

@property (strong, nonatomic) UIViewController *rightViewController;

动设置前端视图控制器

- (void)pushFrontViewController:(UIViewController *)frontViewController animated:(BOOL)animated;

动画调整前端视图控制器位置。位置可以是:FrontViewPositionLeftSideMostRemovedFrontViewPositionLeftSideMostFrontViewPositionLeftSideFrontViewPositionLeftFrontViewPositionRightFrontViewPositionRightMostFrontViewPositionRightMostRemoved

- (void)setFrontViewPosition:(FrontViewPosition)frontViewPosition animated:(BOOL)animated;

创建和获取pan手势识别器

- (UIPanGestureRecognizer*)panGestureRecognizer;

创建和获取tap手势识别器

- (UITapGestureRecognizer*)tapGestureRecognizer;

其他方法在SWRevealViewController.h头文件中有详细文档。

版本更新

截止到2013年11月15日,版本更新已发布在类主头文件中。请参阅SWRevealViewController.h

教程

Xamarin绑定

感谢Jesper Vandborg为此控制器贡献了一个Xamarin绑定项目,该项目可在https://github.com/Vandborg/SWRevealViewController-XamarinBinding 下载。

特别感谢

专门感谢Joan Martin,他曾就职于http://www.sweetwilliamsl.com,并最近为http://www.citizen.tv 开发应用程序。他提出了原始想法,并实现了类中通用的视图部署/卸载和视图控制器替换的代码。

早期代码和API受到了Philip Kluz([email protected])类似类的影响。

许可证

版权所有(C)2013 Joan Lluch [email protected]

在此特此许可,免费提供给任何获取本软件及其相关文档文件(以下简称“软件”)的人,以无限制地使用、复制、修改、合并、发布、分发、许可和/或出售软件副本,并允许提供给软件的人进行此类操作,但必须遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。

软件按“原样”提供,不做任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和未经授权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他原因引起的,出自、源于或与软件或其使用有关。