方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| - (BOOL)isModal { return self.presentingViewController.presentedViewController == self || (self.navigationController != nil && self.navigationController.presentingViewController.presentedViewController == self.navigationController) || [self.tabBarController.presentingViewController isKindOfClass:[UITabBarController class]]; }
- (BOOL)isModal { if([self presentingViewController]) return YES; if([[[self navigationController] presentingViewController] presentedViewController] == [self navigationController]) return YES; if([[[self tabBarController] presentingViewController] isKindOfClass:[UITabBarController class]]) return YES;
return NO; }
|
https://stackoverflow.com/questions/2798653/is-it-possible-to-determine-whether-viewcontroller-is-presented-as-modal
Push或Pop动画
For Push (on MainViewController)
1 2 3 4 5 6 7 8 9
| LoginViewController *VC = [[LoginViewController alloc]init]; CATransition* transition = [CATransition animation]; transition.duration = 0.3f; transition.type = kCATransitionMoveIn; transition.subtype = kCATransitionFromTop; [self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; [[[UINavigationController alloc] initWithRootViewController:VC] pushViewController:VC animated:NO];
|
For Pop (on LoginViewController)
1 2 3 4 5 6 7
| CATransition* transition = [CATransition animation]; transition.duration = 0.3f; transition.type = kCATransitionReveal; transition.subtype = kCATransitionFromBottom; [self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; [self.navigationController popViewControllerAnimated:NO];
|