-->

iOS版:以编程方式创建在错误的位置的UIWindow结果(iOS: Programmaticall

2019-09-23 11:44发布

在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状态栏下的窗口,这并没有解决问题,事情只会变得怪异。

什么是编程方式创建时,它放置在iOS版的UIWindow的正确方法? 谢谢。

Answer 1:

取而代之的[[UIScreen mainScreen] bounds]你需要使用[[UIScreen mainScreen] applicationFrame] 这将是状态栏下的屏幕(如果可见)的区域。



Answer 2:

我想你可能需要这样做:

self.window.windowLevel = UIWindowLevelStatusBar + 1;


文章来源: iOS: Programmatically creating UIWindow results in wrong position