不使用[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationAnyOrientation]如何强制横屏方向?

4
我有一个奇怪的问题,我无法解决它!我的应用支持任何类型的方向(纵向,横向等等),但我设计的一个新部分(视图)只在横向时有用。因此,我必须在按下按钮或创建此特定视图时旋转设备方向时强制加载我的新视图为横向。
使用"shouldAutorotate"可以解决所有问题,但我在网上读到说使用这个API会导致你的应用被苹果拒绝。这是否仍然属实或者我可以使用它?
由于我有很多视图,我使用了一个UIViewController作为“容器”,以便更好地处理它们。不知道使用这个方法本身是否会有问题...... 我试图使用CGTransform旋转视图,并在视图容器内使用BOOL“锁定”旋转。这样可以解决布局问题,使视图正确显示,但是当textView成为第一响应者时,键盘以纵向模式显示。这就是为什么设备方向仍然是纵向的原因。
我还试图通过调整键盘布局来正确显示它,但是没有成功。
谢谢你提供的任何帮助!
1个回答

16

将这段代码放在viewWillAppear中。

UIViewController *viewController = [[UIViewController alloc] init];
[viewController setModalPresentationStyle:UIModalPresentationCurrentContext];
viewController.view.frame = CGRectZero;
[self presentModalViewController:viewController animated:NO];
[self dismissModalViewControllerAnimated:NO];
[viewController release];

这将使新的视图控制器根据设备方向旋转


伙计,你是一个天才。我已经找了将近两天的这段代码了。而解决方案如此简单。 :) 正是我所需要的。 谢谢,伙计。 :) - Maverick1st
我已经寻找这个解决方案很长时间了。我不敢相信这是可能的,但是... =) - NeverBe
我希望我能以某种方式推广这个答案,因为Stack上有很多错误/冗长的答案。真是太棒了! - Lior Frenkel
这个解决方案真的很棒!你能解释一下它是如何工作的吗?非常感谢!! - Bruno Morgado
它看起来确实像魔术,但我真的希望你能尝试解释一下正在发生的事情。在使用这种技巧后,我试图将方向恢复到原来的状态时遇到了问题。有什么帮助吗? - Bruno Morgado
当我使用这段代码时,出现了以下错误:UIViewController的开始/结束外观转换调用不平衡。 - tyegah123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接