力横向
问题描述:
在iOS 5及6我在viewWillAppear中的方法在我的视图控制器这样做:力横向
UIViewController *c = [[UIViewController alloc] init];
//To avoid the warning complaining about the view not being part of the window hierarchy
[[[TWNavigationManager shared] window] addSubview:c.view];
[self presentModalViewController:c animated:NO];
[self dismissModalViewControllerAnimated:NO];
[c.view removeFromSuperview];
我也是在应用程序委托添加了这个方法
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return [[TWNavigationManager shared] supportedInterfaceOrientationsForTopViewController];
}
基本上将该调用转发给顶视图控制器。
这导致我的视图控制器被调用自动旋转方法,然后我能够强制只是该视图控制器的横向方向。 现在在iOS 7中,代码无法工作了。白色视图全屏显示。
什么是iOS7的正确方法?
在此先感谢。
答
有同样的问题,并设法通过解除所呈现的模态视图动画:是的。
[self dismissViewControllerAnimated:YES completion:nil];
希望帮助!
答
我的解决方案涉及安德烈Finayev建议,但也必须设置另一种过渡风格,否则我在解雇动画完成后变得空白屏幕。
UIViewController *mVC = [[UIViewController alloc] init];
mVC.modalPresentationStyle = UIModalPresentationFullScreen;
mVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.navigationController presentViewController:mVC animated:NO completion:^{
[self.navigationController dismissViewControllerAnimated:YES completion:^{
}];
}];
答
为了防止小从mdonia解决方案“闪烁”,我加了一个dispatch_after,并能够与动画驳回虚拟语气的viewController:NO
UIViewController *dummyModalVC = [UIViewController new];
[dummyModalVC setModalPresentationStyle:UIModalPresentationFullScreen];
[dummyModalVC setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[dummyModalVC.view setBackgroundColor:[UIColor purpleColor]];
[self presentViewController:dummyModalVC animated:NO completion:^{
double delayInSeconds = 0.001f;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[dummyModalVC dismissViewControllerAnimated:NO completion:^{}];
});
}];
当然看起来仍然像一个丑陋的解决方法,但我没有找到在给定的时间内更好的解决方案...;(
你从哪里提出这个lanscape-only-viewController?它是导航堆栈中的“推”还是模态地呈现的视图控制器?在这种情况下,它更容易) – Vinzzz
是的,这是一个推动导航堆栈。我的根视图控制器是一个UITabBarViewController,每个项目都有一个UINavigationController。 – mdonati