5

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

为了仅支持纵向模式,我执行了以下操作:

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

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

这就是我实现的方式shouldAutorotateToInterfaceOrientation

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

我刚才注意到,当我旋转手机时,我收到了这条消息:

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

这是什么意思?

4

4 回答 4

10

在目标摘要上,仅选择纵向。

于 2012-04-05T16:37:24.803 回答
5

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

  <key>UISupportedInterfaceOrientations~ipad</key>

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

    <array>

    <string> UIInterfaceOrientationPortrait </string>

</array>
于 2012-04-05T18:09:17.677 回答
4

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

于 2012-04-12T13:37:49.757 回答
2

检查您的 plist 并确保那里的密钥设置正确。

于 2012-04-05T16:38:31.643 回答