在我的一些应用程序设计中或仅仅是一些UIViews,在navigationController的pushViewController之后,我的新视图将被移出窗口状态栏的高度.因此,我将此代码存根放在viewDidLoad方法中.
CGRect frameAt = [self.view frame];
CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
frameAt.origin.y += statusBarFrame.size.height;
[self.view setFrame: frameAt];
Run Code Online (Sandbox Code Playgroud)
这对我来说没有意义,这是XCode和Interface Builder的意图,所以我怀疑在我的视图设计中我正在做一些根本错误的SDK.此外,在极少数情况下,我不必改变观点,我真的不知道两种设计方法的区别.
另请注意,大多数情况下,我尝试使用IB设计我的视图,并进行一些小的自定义.
有没有其他人遇到这个并知道如果没有这样的代码存根他们会做什么修复?
我的应用程序是一个基于UITabBarController的应用程序,有3个孩子vc.状态栏与我的viewcontrollers重叠.我已经尝试过在SO中找到的所有内容:
我尝试将此添加到我的AppDelegate:
//向下偏移以为状态栏self.window.bounds = CGRectMake(0,-20,self.window.frame.size.width,self.window.frame.size.height)腾出空间;
它起作用了,因为它将整个UITabBarController向下移动了20个.但是这导致标签在底部被-20切断.
所以我想我只想将效果应用到每个标签中的UIViewControllers,因为底部没有太多要切断.
所以我尝试在viewDidLoad中添加类似的代码,然后调用setNeedsDisplay:
self.view.bounds = CGRectMake(0,-20,self.view.frame.size.width,self.view.frame.size.height);
但这根本没有效果,仍然会重叠.
我尝试将此添加到viewDidLoad
self.edgesForExtendedLayout = UIRectEdgeNone;
而且我也取消选中了顶栏下的延伸边缘,但它仍然会进入状态栏.还尝试过:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
self.edgesForExtendedLayout = UIRectEdgeNone;
}
Run Code Online (Sandbox Code Playgroud)
但没有雪茄.
我没有增量,因为我使用AL.
我不想隐藏我的状态栏,因为它显示打开/关闭时间,因此用户会发现它能够看到时间.
我想在每个需要它的viewcontroller中将视图向下移动一点是最好的选择,但为什么我的代码不适用于#2?

(顺便说一句:不确定为什么代码格式不起作用且编号关闭,即使我尝试编辑它,它似乎在编辑视图中正常工作但在预览或实时视图中没有工作)