用于 segue 动画的 CATransition(iOS 7 之前的样式)
Posted
技术标签:
【中文标题】用于 segue 动画的 CATransition(iOS 7 之前的样式)【英文标题】:CATransition for segue animation (pre iOS 7 style) 【发布时间】:2013-09-30 11:59:29 【问题描述】:我有一个自定义的 segue,试图复制 pre ios 7 风格的 push/pop segues:
viewControllers 并排动画,没有变暗。(真的有那么难吗!)
以下代码有效,除了:
退出时页面变暗 进入页面在进入时是暗的(移动到位后逐渐变正常)这些图片说明了问题:
然后...
有没有办法阻止这种变暗效果?如果能得到一些帮助,我将不胜感激。
-(void)perform
UIViewController *source = self.sourceViewController;
UIWindow *window = source.view.window;
CATransition *transition = [CATransition animation];
[transition setDuration:2.0];
[transition setDelegate:self];
[transition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
[transition setType:@"push"];
[transition setSubtype:kCATransitionFromRight];
[window.layer addAnimation:transition forKey:kCATransition];
[window setRootViewController:self.destinationViewController];
【问题讨论】:
我已经使用动画 viewController 视图来创建我的 segue(不那么整洁),而不是使用 CATransition。但是,我会保留这个问题,以防它对其他人有所帮助。 你得到解决了吗? 不幸的是,我没有找到一个超级简单的解决方案。我不得不求助于动画 viewController 视图。 (如果 Apple 能够创建一个选项来移除这种不必要的阴影,那就太好了。) 【参考方案1】:这两个函数对我来说很好用,虽然代码和你的很相似,但希望对你有帮助。
+(void) modalRight:(UIViewController*)vc destvc:(UIViewController*)viewCtrl
CATransition *transition = [CATransition animation];
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[vc.view.window.layer addAnimation:transition forKey:nil];
[vc presentModalViewController:viewCtrl animated:NO];
+(void) modalLeft:(UIViewController*)vc
CATransition *transition = [CATransition animation];
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
[vc.view.window.layer addAnimation:transition forKey:nil];
[vc dismissModalViewControllerAnimated:NO];
【讨论】:
这与我使用的非常相似,但不幸的是,在 iOS 7 中,视图控制器在进入/退出时变暗了。这很烦人。以上是关于用于 segue 动画的 CATransition(iOS 7 之前的样式)的主要内容,如果未能解决你的问题,请参考以下文章