我有找到用缩放动画调用pushViewController的方法,例如facebook iPhone应用程序主菜单图标单击动画。(新的viewController从中心弹出,并缩放到原始大小。)
我搜索了几种更改pushViewController动画的方法。
首先,我尝试了这个:
viewController.view.transform = CGAffineTransformMakeScale(0.5f, 0.5f);
[UIView animateWithDuration:0.5f animations:^{
viewController.view.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
}];
[self.navigationController pushViewController:viewController animated:NO];
Run Code Online (Sandbox Code Playgroud)
但是有问题,动画开始播放时,旧的viewController消失了,只有白色背景。
如果使用CATransition更改动画,则可以同时显示新旧的viewController,但是没有缩放动画,只能移动,推入和淡入动画。
我想同时显示CATransition动画之类的新旧视图控制器,并需要实现我的自定义动画的方法。
这是我最后的建议,肮脏的方式:
[self.view addSubview:viewController.view];
viewController.view.transform = CGAffineTransformMakeScale(0.5f, 0.5f);
[UIView animateWithDuration:0.5f
delay:0.0f
options:UIViewAnimationCurveEaseInOut
animations:^{
viewController.view.alpha = 1.0f;
viewController.view.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
} completion:^(BOOL finished) {
[self.navigationController pushViewController:viewController animated:NO];
[viewController release];
}];
Run Code Online (Sandbox Code Playgroud)
首先,我添加了新的viewController.view作为子视图,我可以同时显示具有新视图和旧视图的动画。动画结束后,请稍后推送。
这样我可以实现我的想法,但是我认为这是肮脏的,仍然存在问题:
导航栏项目不会立即更改,动画结束后会更改。
是否有任何简单清晰的方法来实现此动画?我认为如果不更改pushViewController的原始功能就不可能做到这一点,我应该继承pushViewController的子类吗?
感谢您的阅读,以及您的帮助。
| 归档时间: |
|
| 查看次数: |
3242 次 |
| 最近记录: |