如果您从CNViewController继承视图控制器,您将能够在堆栈中推入它们,不仅仅是右侧(如果您使用UINavigationController,就是这样),而是任何四个方向:左、上、右、下。支持自动旋转。
当用户进行拖动手势时,将会发生此类过渡。如果您已针对正确的方向指定了视图控制器(一个类或一种故事板ID),它将以交互方式出现。
提示:您可以不添加任何一行代码即可实现此行为。
如果您想从代码中进行此操作,请将以下视图控制器的一个类分配给以下属性之一
@property (nonatomic, strong) Class leftClass;
@property (nonatomic, strong) Class topClass;
@property (nonatomic, strong) Class rightClass;
@property (nonatomic, strong) Class bottomClass;
你还可以在故事板中指定所有过渡。
值是视图控制器的故事板ID。键由CNViewController_Storyboard.h确定。(您也可以在代码中设置它们。)
此方法允许用户通过拖动进行前进,但所有控制器都必须在同一个故事板中创建。
XXViewController *nextViewController = ...;
[self presentViewController:nextViewController direction:CNDirectionTop animated:YES];
如果堆栈中至少有两个控制器,用户可以将它们拖回以交互式地返回到上一个屏幕(就像使用UINavigationController一样)。或者您也可以在代码中完成相同的操作(但显然没有交互性)
[nextViewController dismissViewControllerAnimated:YES completion:^{ ... }];
这是被重写的UIViewController方法。
- (void)viewIsAppearing:(CGFloat)percentComplete { ... }
在CNViewController子类中覆盖此方法以通知当前屏幕可见部分的当前速度。此方法在过渡期间触发(无论是交互的还是非交互的)。
- (BOOL)shouldAutotransitToDirection:(CNDirection)direction present:(BOOL)present { ... }
来控制交互过渡。您可以选择允许它们或禁止它们,这取决于您应用的逻辑。present参数是YES,如果考虑的过渡将导致在堆栈中显示新的视图控制器。如果为NO,则是后退过渡。
如果您使用剧情来场,您可以轻松地在两个 CNViewController-s 之间创建过渡。当您在目标视图控制器上放下连接时,您会看到一个带有可用过渡列表的弹出窗口。底部(CNBottomSegue)、左部(CNLeftSegue)、右部(CNRightSegue)和顶部(CNRightSegue)来自 CrossNavigation 库,但所有其他过渡也都可以使用。如果您从 CNViewController 创建了常见的模态过渡,则不会崩溃。但是,如果这四个过渡(底部、左部、右部或顶部)是在不是 CNViewController 类(或其子类)的对象之间的视图控制器中进行的,则需要两个控制器都这么做。
您只需 CrossNavigation 目录。只需将其复制到您的项目中,并导入 "CNViewController.h" 或 "CNViewController_Storyboard.h"(如果您要使用剧情功能的一部分),无需其他任何操作。
platform :ios, '7.0'
pod "CrossNavigation"
我非常想知道您对这个库的看法。如果您有任何投诉、建议或疑问,请通过我的电子邮件发送:[email protected]。谢谢。