这是一个自定义的 UIViewController 动画和交互式过渡,用于主详情应用,当从主视图切换到详情视图时使用缩放效果,当返回主视图时使用缩放出来效果。
当返回主视图时,'返回'转换可以通过 pinch 手势或标准的 iOS 7 屏幕边缘平移'返回'手势进行交互式控制。
像我应用 ThenDo 一样使用
最容易的安装方法是将其复制到您的项目中
LCZoomTransition.m
在您的 master 视图控制器中,初始化 LCZoomTransition 的一个实例,并传递您的导航控制器
self.zoomTransition = [[LCZoomTransition alloc] initWithNavigationController:self.navigationController];
为您的详情视图控制器添加一个属性,以便能够使过渡成为一个手势目标
@property (nonatomic, strong) id<LCZoomTransitionGestureTarget> gestureTarget;
在主视图控制器中的 prepareForSegue
中告诉过渡哪个单元格(视图)触发了转换,以及可选地设置详情视图控制器上的手势目标(如果您想使用交互式'返回'手势)
// the transition controller needs to know the view (cell)
// that originated the segue in order to be able to "split"
// the table view correctly
self.zoomTransition.sourceView = [self.tableView cellForRowAtIndexPath:indexPath];
// pass the custom transition to the destination controller
// so it can use it when setting up its gesture recognizers
[[segue destinationViewController] setGestureTarget:self.zoomTransition];
viewDidLoad
上设置手势识别器 // setup a pinch gesture recognizer and make the target the custom transition handler
UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self.gestureTarget action:@selector(handlePinch:)];
[self.view addGestureRecognizer:pinchRecognizer];
// setup an edge pan gesture recognizer and make the target the custom transition handler
UIScreenEdgePanGestureRecognizer *edgePanRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self.gestureTarget action:@selector(handleEdgePan:)];
edgePanRecognizer.edges = UIRectEdgeLeft;
[self.view addGestureRecognizer:edgePanRecognizer];
版权© 2013 Michael Brown
任何获得此软件和相关文档副本(“软件”)的人,免费授予在此软件上不受限制地处理、包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,以及允许将软件提供给他人以便他们按以下条件使用软件
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“原样”提供,不提供任何形式的质量保证,无论是明示的、暗示的,包括但不限于适销性、适用于特定目的和不侵犯专利权。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论该索赔、损害或其他责任是由于合同行为、侵权行为或其他方式引起的,无论该软件或其使用或操作是否有联系。