iOS9用自定义uiwindow覆盖状态栏 - 错误的位置

Art*_*rmz 7 objective-c statusbar uiwindow uiscreen ios9

我试图用我自己的视图覆盖状态栏并且这样做我通过做类似的事情(也在旋转之后)为我的视图计算框架:

UIScreen *screen = [UIScreen mainScreen];
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
Run Code Online (Sandbox Code Playgroud)

对于iOS8 +(因为UIScreenios8依赖于取向):

CGRect frame = [screen.coordinateSpace convertRect:statusBarFrame toCoordinateSpace:screen.fixedCoordinateSpace];
[self setFrame:frame];
Run Code Online (Sandbox Code Playgroud)

对于iOS7:

[self setFrame:statusBarFrame];
Run Code Online (Sandbox Code Playgroud)

它适用于iOS8及以下版本,但在使用Xcode 7 beta 4和iOS 9 SDK构建我的应用程序时,在横向或颠倒启动应用程序时出现问题(如果应用程序以纵向方式启动,则工作正常)...

即.当我在颠倒时启动应用程序时,应该覆盖状态栏的自定义uiwindow将始终位于屏幕的底部,任何想法可能出错?

Wil*_*ate 0

如果没有其他信息,最好的解决方案就是简单地隐藏状态栏。如果您仍然需要“状态栏”用于动画目的或其他原因,这种情况下的典型解决方案是通过调用来模拟它

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdatesUIScreen

并使用返回的视图作为您所呈现的任何视图/窗口的背景。从 iOS 9 开始,没有公共方法可以让您获取指定的特定行为。