1

我必须用两个创建应用程序UIWindow(请不要问为什么)。First支持所有方向UIWindowrootViewController第二个 - 只有纵向和倒置。所以应用程序委托代码如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // part one
    self.windowOne = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    self.windowOne.rootViewController = [[ViewControllerOne alloc] init]; // supports all orientations
    self.windowOne.rootViewController.view = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]] autorelease];

    [self.windowOne makeKeyAndVisible];
    //~part one
    // part two
    self.windowTwo = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    self.windowTwo.rootViewController = [[ViewControllerTwo alloc] init]; // supports only portrait and upside down
    self.windowTwo.rootViewController.view = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image2.png"]] autorelease];

    [self.windowTwo makeKeyAndVisible];
    //~part two
    return YES;
}

如果只有两个部分中的一个处于活动状态(第二个被评论) - 一切都很好。但是如果 windowOne 之前已经成为 key 并且可见windowTwo,则 windowTwo 会按ViewControllerTwo允许旋转,但状态栏的行为非常奇怪:它像windowOnekey 和可见一样旋转。

是否有任何选项可以使状态栏按上述方式旋转ViewControllerTwo

4

1 回答 1

1

尽管它对我来说是一个黑客,但您可以尝试以下方法:

在您的视图控制器shouldAutorotateToInterfaceOrientation(对于 iOS5)或shouldAutorotate(对于 iOS6)方法中添加以下代码行:

[[UIApplication sharedApplication] setStatusBarOrientation: interfaceOrientation animated: YES];

并测试应用程序在此之后的行为。

要在(iOS6 的新功能)shouldAutorotate方法中获取接口方向,请执行以下操作:

UIInterfaceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];

我没有为自己测试这一切,但它可以工作。

(查看一些关于如何在 iOS6 下支持自动旋转的帖子

于 2012-10-23T13:17:19.297 回答