如何在iPhone应用程序上仅支持纵向模式

时间:2012-04-05 16:36:30

标签: iphone objective-c xcode autorotate device-orientation

我正在开发的iPhone应用程序中有一个奇怪的问题。我希望我的应用程序支持 ONLY 纵向模式,但出于某种原因我不能这样做(设备和模拟器)。

为了仅支持肖像模式,我按照以下步骤操作:

  • 在Xcode的TARGET摘要部分,我只选择了肖像。
  • 我的所有ViewControllers都实现了shouldAutorotateToInterfaceOrientation

但正如我所说它不起作用,奇怪的结果是应用程序支持 ALL 方向(纵向,倒置,左侧景观,右侧景观)。
有任何想法吗?

这是我如何实施shouldAutorotateToInterfaceOrientation

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
     // Return YES for supported orientations
     NSLog(@"Checking orientation %d", interfaceOrientation);
     return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

我刚刚注意到,当我旋转手机时,我收到此消息:

  

“不推荐使用两阶段旋转动画。此应用程序应该   使用更流畅的单级动画。“

这意味着什么?

4 个答案:

答案 0 :(得分:9)

在目标摘要上,选择仅限肖像。

答案 1 :(得分:4)

转到info.plist文件。右键单击将其作为源代码打开。并寻找这条线。对我来说,iPad就像这样:

  <key>UISupportedInterfaceOrientations~ipad</key>

删除所有其他方向,并保留唯一需要的方向。就像这样:

    <array>

    <string> UIInterfaceOrientationPortrait </string>

</array>

答案 2 :(得分:4)

屏幕上可以有多个ViewControllers。 UITabBarController本身就是UIViewController,如果它选择的话,它只会将shouldAutorotateToInterfaceOrientation:个请求传递给viewControllers。默认实现执行此操作,但如果您将其子类化,则XCode生成的代码(从iOS 5.1开始)不会。

答案 3 :(得分:2)

检查您的plist并确保其中的键设置正确。