在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];
这就是应用程序现在的样子:
答案 0 :(得分: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