调用 presentViewController:animated:completion: 在 iOS7 中没有动画效果。 View 立即出现。动画在 iOS8 中正常工作。当前方法在我的应用程序的三个不同位置调用,它们都显示此行为。它发生在设备和模拟器上。
随后对 dismissViewControllerAnimated:completion: 的调用可在所有 iOS 版本中正确设置动画。
代码结构
调用本方法的 View Controller 是UINavigationController 的 Root View Controller ,而这个导航 Controller 是UITabBarController 中的viewControllers 之一。
每个调用都很简单,只需按一下按钮即可触发。这是其中一种情况:
GenreViewController *controller = [[GenreViewController alloc] init];
[ self presentViewController: Controller 动画:是完成:无];
尝试修复
- 显式调度到主线程
- 在演示前调用
[UIView setAnimationsEnabled:YES]
- 添加显示 Controller 的延迟(只是为了看看会发生什么)
在每种情况下,行为都没有改变。
任何帮助将不胜感激!
更新 - 修复
事实证明,UITabBarController 的 modalPresentationStyle 属性设置为 UIModalPresentationCurrentContext 。这在 iOS7 中不会动画,您必须使用 UIModalPresentationFullScreen 的演示样式。
Best Answer-推荐答案 strong>
你可以用这个
GenreViewController *addController = [[GenreViewController alloc]
init];
UINavigationController *navigationController = [[UINavigationController alloc]
initWithRootViewController:addController];
[self presentViewController:navigationController animated:YES completion: nil];
关于ios - UIViewController presentViewController modal在iOS7中没有动画,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/31160738/
|