0

上次我运行我制作的 iOS 应用程序时,它必须已针对部署目标 5.0 和相关的 SDK 启用(有可能早在 4.3 时就已启用)。部署现在是 6.1。我的应用程序只运行横向并在横向上运行良好。但是在我更新了我的 iPad 和 iOS SDK 并在大约一年内第一次运行这个应用程序之后,似乎有些事情发生了变化。

这些按钮显示为 iPad 处于纵向模式。这是错误的,因为它应该在横向(并且它曾经工作得很好)。

最新更新中发生了什么变化?

我在 Xcode 中支持的界面方向仅选择了“横向右”,在信息部分我只有一个项目“支持的界面方向”:“横向(右主页按钮)”。

在应用程序首次打开时打开的主视图控件中,我有

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight ||
            interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

还有第一行viewDidLoad

self.view.frame = CGRectMake(0, 0, 1024, 768);

那么为什么代码绘制按钮就像是在纵向模式下呢?


更新

我试图shouldAutorotateToInterfaceOrientation

- (NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationLandscapeRight & UIInterfaceOrientationLandscapeLeft;
}

但它仍然不起作用。

4

2 回答 2

0

iOS6.0中的方向变化

您应该实现以下方法

-(BOOL)shouldAutorotate
{
  return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
   return UIInterfaceOrientationMaskLandscape;
}

// Set the initial preferred orientation
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
   return   UIInterfaceOrientationLandscapeRight;
}

注意
如果您正在使用TabBarController/NavigationController,您应该对这些视图控制器进行子类化以覆盖方向方法,以便它应该调用您自己的视图控制器方法。这是iOS6中的一个重大变化。

 #import "UINavigationController+Orientation.h"

@implementation UINavigationController (Orientation)

-(NSUInteger)supportedInterfaceOrientations
{
   return [self.topViewController supportedInterfaceOrientations];
}

-(BOOL)shouldAutorotate
 {
   return YES;
 }

 @end
于 2013-02-16T10:04:30.077 回答
0

shouldAutorotateToInterfaceOrientation在 iOS 6 中已弃用,您应该 supportedInterfaceOrientations覆盖UIViewController

有来自doc的报价:

在 iOS 6 中,您的应用支持在应用的 Info.plist 文件中定义的界面方向。视图控制器可以覆盖supportedInterfaceOrientations 方法来限制支持的方向列表。一般情况下,系统只会在窗口的根视图控制器或呈现为填满整个屏幕的视图控制器上调用该方法;子视图控制器使用其父视图控制器为它们提供的窗口部分,并且不再直接参与有关支持哪些旋转的决策。应用程序的方向掩码和视图控制器的方向掩码的交集用于确定视图控制器可以旋转到哪些方向。

你可以覆盖一个视图控制器的 preferredInterfaceOrientationForPresentation,该视图控制器旨在以特定方向全屏显示。

于 2013-02-15T20:50:35.227 回答