【问题标题】:iOS 8 status bar background orientation in landscape mode横向模式下的 iOS 8 状态栏背景方向
【发布时间】:2024-01-08 20:56:02
【问题描述】:

在 iOS8 中,在我的 viewController 的 viewDidLoad 方法中,我使用以下代码以编程方式设置主视图:

CGRect appRect = [[UIScreen mainScreen] applicationFrame];
rootView = [[RootView alloc] initWithFrame: appRect];
[self setView: rootView];

该应用程序仅在横向左侧模式下运行(我从应用程序的 plist 文件中控制它)。 这是视图设置后的样子:

即使应用程序处于横向模式,状态栏下方的白条也会显示为应用程序处于纵向模式。 有什么想法可能导致这种情况吗?

编辑: 运行这个:

NSLog(@"%@",NSStringFromCGRect([[UIApplication sharedApplication] statusBarFrame]));

输出:{{0, 0}, {1024, 20}}

编辑: 我为根视图添加了背景颜色:

rootView.backgroundColor = [UIColor greenColor];

这是应用程序现在的样子:

【问题讨论】:

  • @holex 谢谢,我试过了,看起来不错 {{0, 0}, {1024, 20}}。我更新了问题。所以状态栏没问题,但是白色区域看起来好像是纵向模式
  • 您能否显示您设置“仅纵向”的位置的屏幕截图。
  • 你的意思是plist配置的截图吗?它实际上只设置为横向:tinypic.com/r/5cr6g/8
  • 对了。在您的问题中,您说“该应用程序仅在纵向模式下运行”。您应该在“部署信息”下的“构建设置”中设置“仅横向”,而不是在 plist 中。它们有点相同,但在可用时使用复选框。你能在 Xcode 中显示这个位的屏幕截图吗...i.stack.imgur.com/VHd1d.png
  • 听起来您在编辑的 plist 和方向设置之间存在冲突设置。可能。

标签: ios ios8 uikit


【解决方案1】:

我的问题是在我的 appdelegate 中我的 - (void)applicationDidFinishLaunching:(UIApplication *)application 方法: 我没有设置根视图控制器。相反,我这样做了:

viewController = [[BoardViewController alloc] init];
[window makeKeyAndVisible];
[window addSubview: [viewController view]];

一旦我改变了根视图框架覆盖整个窗口并且状态栏背景是它应该在的位置:

viewController = [[BoardViewController alloc] init];
[window makeKeyAndVisible];
window.rootViewController = viewController;

我从这个答案中得到了这个想法:iOS 8 - Launching the application in Landscape mode

【讨论】:

    最近更新 更多