【发布时间】:2011-04-29 15:23:36
【问题描述】:
我找到了使用缩放动画调用 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];
但是有问题, 动画开始时旧的 viewController 消失了,只有白色背景。
如果我使用 CATransition 来改变动画, 我可以同时显示新旧视图控制器, 但没有缩放动画,只有移动、推入、淡入动画。
我想同时显示新旧视图控制器,例如 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];
}];
首先,我添加了新的 viewController.view 作为子视图,我可以同时显示带有新旧视图的动画。 动画结束后,pushViewController。
这样我就可以实现我的想法, 但我认为这是肮脏的方式,并且仍然存在问题:
导航栏项目不会立即改变,它会在动画结束后改变。
有没有简单明了的方法来实现这个动画? 我认为不改变pushViewController的原始实现是不可能的,我应该继承pushViewController吗?
感谢阅读,感谢您的帮助。
【问题讨论】:
标签: ios