场景是这样的:
让我们说ViewControllers A,B。
A仅支持纵向模式。 B支持所有模式。
我点击A中的缩略图并在B中显示完整图像。因此B中的自动旋转工作正常。如果我在B处于纵向模式时从B回到A,则工作正常。
但问题是,当我在B时,如果我将手机保持在横向模式,那么如果我回到A,那么它也会显示不应发生的风景。
我在iOS7中工作得非常好,但它在iOS 8中搞砸了。
任何人都可以帮忙吗?提前谢谢。
答案 0 :(得分:0)
您的代码有问题。我刚刚实现它进行测试,它工作正常。
我加入了A:
- (NSUInteger) supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
添加到B:
- (NSUInteger) supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
并将按钮添加到A以打开B:
- (IBAction) buttonAction:(id)sender
{
UIStoryboard *story = [UIStoryboard storyboardWithName:@"itShouldWork" bundle:nil];
MyViewController *controller = (MyViewController *)[story instantiateInitialViewController];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:controller];
[self presentViewController:nav animated:YES completion:nil];
}
正如我所说,它运作良好。在iphone 5设备(iOS 8)上测试。使用Xcode 6构建
答案 1 :(得分:0)
这似乎是iOS 8中的一个错误。
作为一种解决方法,您可以将B控制器包装在UINavigationController中。除了检查iOS版本外,它看起来像
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8")) {
[self presentViewController:[[UINavigationController alloc] initWithRootViewController:controllerB] animated:YES completion:nil];
} else {
[self presentViewController:controllerB animated:YES completion:nil];
}
可以找到用于检查iOS版本的宏here。