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

标签 objective-c ios9 statusbar uiwindow uiscreen

我试图用我自己的 View 覆盖状态栏,为此我通过做类似的事情(也在旋转之后)来计算我的 View 的框架:

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 构建我的应用程序时,在横向或倒置启动应用程序时出现问题(如果应用程序以纵向启动则工作正常)...

即。当我在 Upsidedown 启动应用程序时,应该覆盖状态栏的自定义 uiwindow 将始终出现在屏幕底部,有什么想法可能是错误的吗?

最佳答案

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

- UIScreen 上的 (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates

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

关于objective-c - iOS9 用自定义 uiwindow 覆盖状态栏 - 错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31581526/

相关文章:

iOS NSMutableAttributedString 因无法识别的选择器而崩溃

iphone - 联合数组的 NSArray

iOS 9 CoreSpotlight API Xamarin 在 Index() 上崩溃

swift - 无法使用白色按钮项目色调使 UIToolBar 变为黑色(ios 9,Swift)

ios - 关于电话通讯录iOS排序的信息

php - 从 iPhone 应用程序将图像上传到服务器 PHP 脚本

ios - ionic 应用程序 iOS 9 问题 [$rootScope :infdig] 10 $digest() iterations reached

ios - 更新工具栏的 positionForBar

android - android中的真实背景图像大小(带状态栏)

Android 4.4 使用辅助功能服务和服务隐藏导航栏/状态栏