CWStackController 是一个类似 UINavigationController 的自定义容器视图控制器,它为 POP 和 PUSH 提供了全屏滑动手势支持,灵感来自 NetEase News,并被用于我最近的应用程序 cnBeta Reader。
CWStackController 的 API 几乎与 UINavigationController 的相同,因此它非常易于使用
// Init
- (instancetype)initWithRootViewController:(UIViewController *)rootViewController;
// Push
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
// Pop
- (UIViewController *)popViewControllerAnimated:(BOOL)animated;
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
// Accessing
@property (nonatomic) NSArray *viewControllers;
- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated;
@property (nonatomic, readonly) UIViewController *topViewController;
可以通过滑动手势来推送新的控制器:
假设您有一个视图控制器 A 位于 CWStackController 堆栈中,您想通过滑动手势将新的视图控制器 B 推送至堆栈,您只需要让 A 承诺 CWStackProtocol
并实现 - (UIViewController *)nextViewController
// A.m
- (UIViewController *)nextViewController
{
return B;
}
您可以为触发推送或弹出滑动手势的阈值、动画的持续时间和阴影进行自定义。
与滚动视图一起工作
CWStackController 现在可以很好地与滚动视图一起工作,如果您想在子视图控制器中有滚动视图并且想要通过拖动来执行推送或弹出,您需要使用它的 API 将滚动视图设置为 CWStackController 实例。
- (void)setContentScrollView:(UIScrollView *)scrollView;
参见 演示 项目以了解更多细节。
有两个选项
CWStackController
。CWStackController 可在 MIT 许可证下获得。有关更多信息,请参阅 LICENSE 文件。