目前我在iPhone应用程序中只有纵向模式。我想在应用程序中为一个控制器允许横向模式,但不幸的是我无法使它工作。
我在plist文件中有这些设置:
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
</array>
我在控制器中实现了这些方法:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
-(BOOL)shouldAutorotate
{
return YES;
}
我在应用程序中使用导航控制器,所以我意识到这可能是问题所在。我将UINavigationController
子类化,并以与上述相同的方式再次实施shouldAutorotateToInterfaceOrientation
,supportedInterfaceOrientations
和shouldAutorotate
。当然,我使用子类导航控制器来显示应该具有旋转能力的控制器。我还试图按类别覆盖导航控制器的方法,但它也不起作用。
我从一开始就没有在应用程序上工作,我继承了代码。如果有可能如何限制全球景观,那可能就是我的情况。为了测试,我使用iPhone 6.0模拟器,但我的部署目标是5.0。我感谢任何提示/帮助。
答案 0 :(得分:2)
iOS6还要求您为窗口设置rootViewController,而不是将控制器的视图添加为子视图。
如果您正在做这样的事情:
[window addSubview:someController.view];
然后您可以尝试将其更改为:
[window setRootViewController:someController];
另请查看此link。对于ios6,Apple引入了这两种方法:
supportedInter
希望它有所帮助。
Shumais Ul Haq
答案 1 :(得分:1)
在想要提供横向方向的控制器上试试这个
// override to allow orientations other than the default portrait orientation
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// return YES for supported orientations
return UIInterfaceOrientationIsLandscape(interfaceOrientation); // support only landscape
}
答案 2 :(得分:0)