Alf*_*sen 44 objective-c uiviewcontroller ios ios7
我对如何创建NSObject实现UIViewControllerInteractiveTransitioning协议的子类的简洁示例感兴趣,以管理两个UIViewControllers 之间的自定义交互式转换.理想情况下,响应轻扫手势.类似于现在附带的iOS7默认交互式滑动UINavigationController,但这是一个自定义/手动实现示例.
我已经阅读了文档:
并在其他地方看了几个例子:
文档相当清楚,但不引用示例代码.这些例子还有一些不足之处(关于各个部分如何捆绑在一起的未解答的问题).
所以我的问题是:
UIViewControllerInteractiveTransitioning协议的对象的空白吗?提前致谢...
Mat*_*oal 12
1)将手势绑定到UIViewControllerInteractiveTransitioning对象的最简单方法是将其作为子类UIPercentDrivenInteractiveTransition.然后在这里实现手势处理程序,updateInteractiveTransition:在这里调用一个代码示例:
-(void)handlePinch:(UIPinchGestureRecognizer *)pinch {
CGFloat scale = pinch.scale;
switch (pinch.state) {
case UIGestureRecognizerStateBegan: {
_startScale = scale;
self.interactive = YES;
[self.navigationController popViewControllerAnimated:YES];
break;
}
case UIGestureRecognizerStateChanged: {
CGFloat percent = (1.0 - scale/_startScale);
[self updateInteractiveTransition:(percent < 0.0) ? 0.0 : percent];
break;
}
case UIGestureRecognizerStateEnded: {
CGFloat percent = (1.0 - scale/_startScale);
BOOL cancelled = ([pinch velocity] < 5.0 && percent <= 0.3);
if (cancelled) [self cancelInteractiveTransition];
else [self finishInteractiveTransition];
break;
}
case UIGestureRecognizerStateCancelled: {
CGFloat percent = (1.0 - scale/_startScale);
BOOL cancelled = ([pinch velocity] < 5.0 && percent <= 0.3);
if (cancelled) [self cancelInteractiveTransition];
else [self finishInteractiveTransition];
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码来自https://www.captechconsulting.com/blogs/ios-7-tutorial-series-custom-navigation-transitions--more
2)功能animateTransition的UIViewControllerAnimatedTransitioning用于执行交互式过渡.由于您之前的呼叫,它会自动在"关键帧"中进行分区updateInteractiveTransition.但我想如果你实现你的startInteractiveTransition:方法UIViewControllerInteractiveTransitioning(所以不使用UIPercentDrivenInteractiveTransition子类)那么你有责任管理完全过渡(不确定那个......抱歉,但我认为文档并不是很清楚).
Apple确实提供了一个示例项目,您可以如何实现这一目标.话虽如此,我认为这不是最好/最清楚的例子,但它应该让你走上正确的道路.
他们还有一个WWDC视频,可以带您完成这个项目.
请注意,这是一个相当复杂的例子,但是如果你确实设法将它拆开并理解各个部分,那么你应该有能力在过渡方面处理或多或少的任何事情.
本质上,项目将问题分为两个辅助类,1)AssetTransitionController用视图控制器初始化,并且在视图控制器的生命周期中存在,2)AssetTransitionDriver在开始时创建的对象,并且存在持续时间. ,过渡.
该AssetTransitionController是相当简单的,它符合UIViewControllerAnimatedTransitioning和UIViewControllerInteractiveTransitioning管理的生命周期AssetTransitionDriver.
这AssetTransitionDriver是一个简单的NSObject子类,但实际上最终会复杂得多.它管理main UIViewPropertyAnimator,为转换创建视图层次结构,并响应交互驱动程序(平移手势识别器).它还会根据AssetTransitionController要求将其动画师出售.
它根本不使用UIPercentDrivenInteractiveTransition.
| 归档时间: |
|
| 查看次数: |
15932 次 |
| 最近记录: |