我正在使用IB设计屏幕,在设计时,这就是屏幕的样子:
我正在使用自动布局,并且没有遗漏约束。这是我使用模拟器运行它时的样子:
它坐着不知道那里有一个不透明的顶栏,并从顶部直接开始布置视图。
有没有人知道为什么会这样?
谢谢
答案 0 :(得分:2)
尺寸,状态栏,方向,顶部栏,底栏仅在属性检查器中模拟,e.i。你看到的是不你得到的东西,它只是模拟......
制作状态栏/底栏/方向等。必须通过代码或.xib属性检查器/大小检查器来完成。
对于状态栏,您可以看到this。
希望它有所帮助。
答案 1 :(得分:0)
在视图控制器中将以下代码添加到viewDidLoad:
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
self.edgesForExtendedLayout = UIRectEdgeNone;
}
答案 2 :(得分:0)
您可以通过在iOS7 SDK中实现名为edgesForExtendedLayout的新属性来实现此目的。请添加以下代码以实现此目的,
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
您需要在 - (void)viewDidLoad方法中添加上述内容。
iOS 7对您布局和自定义UI外观的方式进行了一些更改。视图控制器布局,色调颜色和字体的更改会影响应用程序中的所有UIKit对象。此外,手势识别器API的增强功能可让您对手势交互进行更精细的控制。
使用视图控制器
在iOS 7中,视图控制器使用全屏布局。同时,iOS 7可以更精细地控制视图控制器的视图布局。特别是,全屏布局的概念已经过改进,让视图控制器指定其视图每个边的布局。
在iOS 7中不推荐使用wantsFullScreenLayout视图控制器属性。如果您当前指定wantsFullScreenLayout = NO
,则视图控制器可能会在iOS 7中运行时在意外的屏幕位置显示其内容。
要调整视图控制器放置视图的方式,UIViewController提供以下属性:
<强> edgesForExtendedLayout 强>
edgesForExtendedLayout属性使用UIRectEdge类型,该类型除了指定none和all之外,还指定矩形的四个边。使用edgesForExtendedLayout指定视图的哪些边应该扩展,而不管条形半透明。默认情况下,此属性的值为UIRectEdgeAll。
<强> extendedLayoutIncludesOpaqueBars 强>
如果您的设计使用不透明条形,请通过将extendedLayoutIncludesOpaqueBars
属性设置为NO来细化edgesForExtendedLayout。 (extendedLayoutIncludesOpaqueBars
的默认值为NO。)
<强> automaticallyAdjustsScrollViewInsets 强>
如果您不想自动调整滚动视图的内容插入,请将automaticallyAdjustsScrollViewInsets
设置为NO。 (默认值automaticallyAdjustsScrollViewInsets
为YES。)
topLayoutGuide,bottomLayoutGuide
topLayoutGuide
和bottomLayoutGuide
属性指示视图控制器视图中顶部或底部条边的位置。如果条形图应与视图的顶部或底部重叠,则可以使用Interface Builder通过在topLayoutGuide底部或bottomLayoutGuide
顶部创建约束来相对于条形图定位视图。 (如果没有条形图与视图重叠,则topLayoutGuide的底部与视图的顶部相同,bottomLayoutGuide的顶部与视图的底部相同。)两个属性在请求时都会延迟创建。