为什么Ios忽略它下面的顶部栏和布局项目?

时间:2014-01-12 06:48:24

标签: ios interface-builder autolayout

我正在使用IB设计屏幕,在设计时,这就是屏幕的样子: enter image description here

我正在使用自动布局,并且没有遗漏约束。这是我使用模拟器运行它时的样子:

enter image description here

它坐着不知道那里有一个不透明的顶栏,并从顶部直接开始布置视图。

有没有人知道为什么会这样?

谢谢

3 个答案:

答案 0 :(得分:2)

尺寸,状态栏,方向,顶部栏,底栏仅在属性检查器enter image description here中模拟,e.i。你看到的是你得到的东西,它只是模拟......

enter image description here

制作状态栏/底栏/方向等。必须通过代码或.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

topLayoutGuidebottomLayoutGuide属性指示视图控制器视图中顶部或底部条边的位置。如果条形图应与视图的顶部或底部重叠,则可以使用Interface Builder通过在topLayoutGuide底部或bottomLayoutGuide顶部创建约束来相对于条形图定位视图。 (如果没有条形图与视图重叠,则topLayoutGuide的底部与视图的顶部相同,bottomLayoutGuide的顶部与视图的底部相同。)两个属性在请求时都会延迟创建。