在iOS 8中,当呈现模态(比方说透明背景)时,我们需要设置segue(或模态)以使用UIModalPresentationOverCurrentContext
的呈现样式。这是按预期工作的。
要完成iOS 7的相同操作,您需要将呈现视图控制器设置为具有UIModalPresentationCurrentContext
的模式演示样式。这是我遇到问题的地方。我用动画呈现模态,但它没有动画效果。提交后,一切正常,甚至动画解雇。此外,如果我将演示文稿样式更改为UIModalPresentationFullScreen
,它会正确动画。
我已经四处搜索并阅读其他帖子,但我无法找到原因或解决方法。
答案 0 :(得分:1)
ViewController *vcObj = [[ViewController alloc] initWithNibName:NSStringFromClass([ViewController class]) bundle:nil];
UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:vcObj];
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
navCon.providesPresentationContextTransitionStyle = YES;
navCon.definesPresentationContext = YES;
navCon.modalPresentationStyle = UIModalPresentationOverCurrentContext;
[self presentViewController:navCon animated:NO completion:nil];
}
else {
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[self presentViewController:navCon animated:NO completion:^{
[navCon dismissViewControllerAnimated:NO completion:^{
appDelegate.window.rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:navCon animated:NO completion:nil];
appDelegate.window.rootViewController.modalPresentationStyle = UIModalPresentationFullScreen;
}];
}];
}