iOS提供了为UIViewController之间的Push或者PresentModalViewController切换提供了4种动画效果。分别为翻页、弹出、滑入、溶解等,在大多数情况下已经够用,不过有时想以滑动动画来展示模态视图(Modal),结果发现不支持。考虑到本质上系统提供的动画也是视图直接的切换,由CALayer来承载。这时,我们就可以考虑通过给CALayer加上动画来实现需要的效果。
从右侧滑出弹出窗口的动画:
CATransition *transition = [CATransition animation];
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[self.view.window.layer addAnimation:transition forKey:nil];
[self presentModalViewController:viewCtrl animated:NO];
从右侧滑出弹出窗口的动画:
CATransition *transition = [CATransition animation];
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
[self.view.window.layer addAnimation:transition forKey:nil];
[self dismissModalViewControllerAnimated:NO];
更多代码请关注戴维营代码馆,努力建造最完善的移动应用代码馆!