如何推动ViewController从左到右的幻灯片效果? animation名称需要
编辑:
- 下面gif的animation名称是什么(从右到左)?
- 下面GIF的补充animation(从左到右)是什么animation名称?
注:我不想推一个赛格。 我想用这个animation推一个视图。
编辑2:
当我谈论animation名称时,有些人会感到困惑。 不过这里是一个animation名称的例子(名字是: UIViewAnimationTransitionFlipFromRight ):
[UIView beginAnimations: @"Showinfo"context: nil]; [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; [UIView setAnimationDuration:0.75]; [self.navigationController pushViewController: view animated:NO]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; [UIView commitAnimations];
我正在使用push和pop来调用堆栈上的操作。 我相信导航控制器保持导航在一个堆栈样式结构。
我正在使用导航控制器,我喜欢使用导航栏项目返回(popup)到先前视图时得到的效果。 这是一个从右到左的效果,很好,顺利。
这是一个从右到左的例子:
我怎样才能从右到左的效果创造补充的一个? 换句话说,当我在视图层次下去时?
这是我现在如何推视图控制器:
[self.navigationController pushViewController:view animated:YES];
animation名称…好吧,没有独特的方法来调用animation,但我们试试吧
- 从右到左滑动(呈现视图控制器滑动)
- 从左到右滑出(视图控制器滑动被解除)
这里有很多UIViewController自定义转换的例子,例如参见: 重新创buildWWDC会话218的示例代码的github项目:使用视图控制器的自定义转换 (您感兴趣的类应该是SOLSlideTransitionAnimator
,它使各种'幻灯片'animation)
编辑
好的,你不是在讨论animation名称,而是在混合2个API,这些API是相关的:
- UIView的animation(顺便说一句,你使用的是旧的API,较新的API与块是首选)
从Apple UIView文档
iOS 4.0及更高版本不鼓励使用此方法。 您应该使用基于块的animation方法来指定您的animation。
- UIViewController转换(如导航推…)
现在,您正在embedded一个UINavigationController
推送调用INSIDE一个UIView
animation事务。 这是错误的 !
为什么? 那么,调用UINavigationController
pushViewController:animated
UIViewanimation被调用的pushViewController:animated
结果 – 苹果公司默认animation,或者你自己的animation,如果你提供一个UIViewControllerTransitioningDelegate
到你的控制器所以基本上你调用animation内的animation…
苹果已经提供了自iOS 7以来定制animation的方法,您应该使用它们提供的API。 这是我链接到的github示例代码使用的API。 如果您需要进一步介绍,请阅读Apple文档或其他资源
对于推送,您已经通过推送视图来使用正确的方式,但是他们不需要任何animation代码,只有在代码之下就足够了。
[self.navigationController pushViewController: view animated:NO];
对于stream行音乐,您可以在iOS 7中提供的DetailView中添加以下代码。
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
我们需要为viewController添加CATransitionanimation。 看这个,
add <CAAnimationDelegate> in your .h file UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; ViewController *VC = [storyboard instantiateViewControllerWithIdentifier:@ViewController"]; CATransition *transition = [CATransition animation]; transition.duration = 0.45; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; transition.type = kCATransitionPush; transition.subtype = kCATransitionFromLeft; transition.delegate = self; [self.navigationController.view.layer addAnimation:transition forKey:nil]; [self.navigationController pushViewController:VC animated:NO];