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

时间:2015-07-23 08:05:13

标签: objective-c ios9 statusbar uiwindow uiscreen

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

UIScreen *screen = [UIScreen mainScreen];
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;

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

CGRect frame = [screen.coordinateSpace convertRect:statusBarFrame toCoordinateSpace:screen.fixedCoordinateSpace];
[self setFrame:frame];

对于iOS7:

[self setFrame:statusBarFrame];

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

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

1 个答案:

答案 0 :(得分:0)

如果没有其他信息,最佳解决方案就是隐藏状态栏。如果您仍然希望“状态栏”用于动画目的或其他原因,则此方案中的典型解决方案是通过调用来模拟它

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates

上的

UIScreen

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