几分钟前我设置了 XCode 4.5 和 iOS6 模拟器。我的应用程序支持 iPhone 的所有4 个方向,纵向底部和顶部主页按钮,横向左右。
好吧,我把它放到 .plist 中,因为它是 iOS6 所要求的,而且旧的 shouldRotateTo... 方法仍然存在,返回 YES。
但在模拟器中,应用程序不会旋转到纵向顶部主页按钮。
为什么?这是故意的吗?它会在设备上正常工作吗?
谢谢。
好的,我现在自己找到了答案。
拥有是不够的
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
在您的 ViewController 中,如果它被推入UINavigationViewController
. UINavigationViewController
也得有那些方法。最好通过在UINavigationViewController
.
这是我的UINavigationController-Rotation.h
:
@interface UINavigationController (Rotation)
@end
和我的 UINavigationController-Rotation.m:
#import "UINavigationController-Rotation.h"
@implementation UINavigationController (Rotation)
#pragma From UINavigationController
- (BOOL)shouldAutorotate {
BOOL result = self.topViewController.shouldAutorotate;
return result;
}
- (NSUInteger)supportedInterfaceOrientations {
NSUInteger result = self.topViewController.supportedInterfaceOrientations;
return result;
}
#pragma -
@end
谢谢你帮助我!
iPhone 上 iOS6 的默认行为是没有颠倒方向。
您也可以在 Safari 或地图中看到此行为。
我试图用 UIInterfaceOrientationMaskAll 覆盖它,就像 Dean 说的那样,但没有效果。我决定不再使用颠倒模式,因为它是一种我喜欢遵循的用户界面指南,而不是让用户感到困惑。
我认为您的 viewControllers 将返回几乎颠倒的默认值。你需要实现:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
对于您想要支持所有方向的所有视图控制器。
以防即使在遵循 Christoh 的回答后仍有问题的其他人:
我刚刚注意到项目 plist 有 iPad 和 iPhone 的单独条目(支持的界面方向(iPad)和支持的界面方向(iPhone))。
希望有帮助。