1.想自定义UINavigationController页面切换的动画,达到presentViewController和dismissViewController的效果,但是又能保存在UINavigationController的viewControllers里以方便各种POP操作,可以使用如下方式:
PUSH:
CATransition *animation = [CATransition animation];
[animation setDuration:0.3];
[animation setType: kCATransitionMoveIn];
[animation setSubtype: kCATransitionFromTop];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
UIStoryboard *storyboard = self.storyboard;
UnknownDeviceListViewController *unknownViewController = [storyboard instantiateViewControllerWithIdentifier:@"bluetoothlist"];
[self.navigationController pushViewController:unknownViewController animated:NO];
[self.navigationController.view.layer addAnimation:animation forKey:nil];
POP:
CATransition *animation = [CATransition animation];
[animation setDuration:0.3];
[animation setType: kCATransitionMoveIn];
[animation setSubtype: kCATransitionFromBottom];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
[self.navigationController.view.layer addAnimation:animation forKey:nil];
[self.navigationController popViewControllerAnimated:NO];
注意,POP的时候,必须先addAnimation,然后在popViewController。否则如果animated为NO,则没有动画效果;如果animated为YES,则自带的POP动画和我们自定义的POP动画会一起生效。