我已经找到方法来调用pushViewController缩放动画, 像facebook应用程序主菜单图标点击动画。 (新viewController从中心弹出,并且它缩放到原始大小。)pushViewController带缩放动画,显示背景
我搜索了几种方法来改变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改变动画, 我可以同时显示老&新的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];
}];
首先,我增加了新的viewController.view作为子视图,我可以给新老&观看动画两者。 动画结束后,再pushViewController。
这样我可以实现我的想法, 但我认为这是肮脏的方式,而且也仍然问题:
导航栏项目不会立即改变,这是动画结束后改变。
有没有简单明了的方法来实现这个动画? 我认为这是不可能的,如果没有改变pushViewController的原始实现,我应该做子类pushViewController?
感谢您的阅读和您的帮助。