0

我无法以横向模式启动应用程序。视图始终以纵向模式显示。

我在 plist 中配置了以下内容:

<key>UISupportedInterfaceOrientations</key>
<array>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
</array>

UIViewController 在 AppDelegate.m 中创建:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.myViewController = [MyViewController alloc];

    UIView *myView = [[UIView alloc] init];
    myView = [UIColor whiteColor];
    self.myViewController.view = myView;

    self.window.rootViewController = self.myViewController;
    self.window makeKeyAndVisible];
    return YES;
}

将 shouldAutorotateToInterfaceOrientation 添加到 MyViewController.m

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

当设备处于纵向模式并且应用程序启动时,状态栏处于横向模式。但是,当 UIView 显示时,它将以纵向模式结束。当设备处于横向模式时,也会发生同样的事情。

但是,当我在 Interface Builder 中创建 UIViewController 时,它可以工作。

这是否与 autoresizemasking 有关,因为当我在 AppDelegate.m 中添加它时它不起作用:

 myView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ;
4

3 回答 3

0

在您的代码中,我发现了一个语法错误,我认为您的意思是 myView.backgroundColor = [UIColor whiteColor]; 但这是唯一的错误,您的代码工作正常,应用程序启动并保持横向模式,无论是否有 myView.autoresizingMask

我的环境:xCode 4.5 设备 iPhone 4S 和 IOS 6.0

于 2012-10-12T18:29:49.897 回答
0

将此代码替换为您的ViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||(interfaceOrientation == UIInterfaceOrientationLandscapeRight));
} 
于 2012-10-12T18:16:39.460 回答
0

使用它在启动时查找方向..它将正常工作:

UIInterfaceOrientation orientation = [UIDevice currentDevice].orientation;
if (! UIDeviceOrientationIsValidInterfaceOrientation(orientation))
    orientation = [UIApplication sharedApplication].statusBarOrientation;

然后使用这个方向来旋转你的视图

于 2012-10-12T18:21:15.253 回答