CrossNavigation 1.2.0

CrossNavigation 1.2.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2016年6月

Artem Stepanenko维护。



如果您从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"(如果您要使用剧情功能的一部分),无需其他任何操作。

Podfile

platform :ios, '7.0'
pod "CrossNavigation"

要求

  • iOS 7.0+
  • UIKit 框架
  • Foundation 框架

待办事项

  • 支持部分屏幕过渡(如侧屏幕)
  • 将库移植到 Swift(感谢 Nicolas Purita
  • 支持过渡

附言

我非常想知道您对这个库的看法。如果您有任何投诉、建议或疑问,请通过我的电子邮件发送:[email protected]。谢谢。