我知道这个问题已被问过几次,我看到的解决方案非常有帮助。但由于我有两个相互矛盾的要求,我有点搁浅,希望能找到一些帮助。
以下是要求:
First View控制器嵌入在导航控制器中。
根据其他一些帖子中的建议,我做了以下
在app delegate
中添加了此代码CGRect frame = [[UIScreen mainScreen] bounds];
self.window.frame = CGRectMake(0,20,frame.size.width,frame.size.height-20);
self.window.bounds = self.window.frame;
如果我只留在具有状态栏的那些View控制器中,它可以正常工作。
当我打开FULL屏幕视图控制器时,VC会在顶部被切断,如图所示。
此外,当我回到主视图控制器时,现在它们也向上移动,标题栏是状态栏显示的位置。
我试图通过重置view.frame并请求布局来重新推送视图,但它没有生效。
有关如何解决此问题的任何建议?
答案 0 :(得分:0)
不要在app delegate中更改self.window.bounds。相反,在你的视图控制器中尝试这样的事情:
-(void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES/NO animated:YES];
[self setNeedsStatusBarAppearanceUpdate]; // For showing/hiding status bar
[super viewWillAppear:animated];
}
- (BOOL)prefersStatusBarHidden {
return YES/NO;
}
根据状态栏和导航栏是否存在,ViewDidLoad中的视图将具有不同的帧。