状态栏与UIWindow分开旋转

时间:2012-10-23 11:54:44

标签: objective-c ios uiviewcontroller uiwindow

我必须使用两个UIWindow创建应用程序(请不要问为什么)。首先UIWindow的{​​{1}}支持所有方向。第二个 - 只有肖像和颠倒。因此,应用程序委托代码如下所示:

rootViewController

如果只有两个部分中的一个处于活动状态(第二个部分被评论) - 一切正常。但是如果windowOne在- (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; } 之前变为关键且可见,则windowTwo会在windowTwo允许的情况下旋转,但状态栏的行为非常奇怪:它像ViewControllerTwo一样旋转是关键且可见的。

是否可以选择让状态栏旋转为windowOne

1 个答案:

答案 0 :(得分:1)

虽然它是对我的攻击,但你可以尝试的内容如下:

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

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

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

在(new for iOS6)shouldAutorotate方法中获取面向接口的方法执行以下操作:

UIInterfaceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];

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

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