iOS:以编程方式创建UIWindow导致错误的位置

时间:2012-10-03 20:52:46

标签: ios5 ios6 uiwindow cgrect uiscreen

在iOS 5.1.1中,我发现如果我创建了我的UIWindow(我厌倦了IB),并将其框架设置为[UIScreen mainScreen] .bounds,则窗口会在状态栏下显示 。但是,如果我做同样的事情是iOS 6,它会出现在状态栏正下方的正确位置。

CGRect r = [[UIScreen mainScreen] bounds];
self.window = [[UIWindow alloc] initWithFrame: r];
self.detailViewController = [[DetailViewController alloc] init];
self.window.rootViewController = self.detailViewController;
[self.window addSubview: detailViewController.view];
[self.window makeKeyAndVisible];

但是,如果我插入r.origin.y + = 20,要将窗口移动到iOS 5.1.1中的状态栏下方,这不能解决问题,只会变得更奇怪。

在以编程方式创建UIWindow时,在UI中放置UIWindow的正确方法是什么? 感谢。

2 个答案:

答案 0 :(得分:2)

而不是[[UIScreen mainScreen] bounds],您需要使用[[UIScreen mainScreen] applicationFrame]。这将是状态栏下方的屏幕区域(如果可见)。

答案 1 :(得分:0)

我想你可能需要这样做:

self.window.windowLevel = UIWindowLevelStatusBar + 1;