几分钟前我设置了XCode 4.5和iOS6模拟器。 我的应用支持iPhone的所有 4 方向, 肖像底部和顶部主页按钮,左右横向。
好吧,我把它放到.plist中,因为它是iOS6所要求的,旧的shouldRotateTo ...方法仍然在那里返回YES。
但是在模拟器中,应用程序不旋转到纵向顶部主页按钮。
为什么呢?这是出于目的吗?它能在设备上正常工作吗?
感谢。
答案 0 :(得分:18)
行, 我现在自己找到了答案。
是不够的
- (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
感谢您的帮助!
答案 1 :(得分:2)
iPhone上iOS6的默认行为是没有颠倒的方向。
您也可以在Safari或地图中看到此行为。
我尝试用UIInterfaceOrientationMaskAll覆盖它,就像Dean说的那样,但没有效果。 我决定不再使用颠倒模式,因为它是一种用户界面指南,我喜欢遵循它而不是混淆用户。
答案 2 :(得分:1)
我认为你的viewControllers将返回默认值,但这些默认值都是颠倒的。你需要实现:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
对于所有想要支持所有方向的viewControllers。
答案 3 :(得分:0)
如果其他人在遵循Christoh的回答后仍然有问题:
我刚注意到plist项目有单独的iPad和iPhone条目(支持的界面方向(iPad)和支持的界面方向(iPhone))。
希望有所帮助。