Ios “什么是”呢;“限制到保证金”;在Xcode 6的故事板中

Ios “什么是”呢;“限制到保证金”;在Xcode 6的故事板中,ios,xcode,storyboard,autolayout,xcode6,Ios,Xcode,Storyboard,Autolayout,Xcode6,我正在使用自动布局和约束,发现在Xcode 6中有一个约束到边距选项,该选项在Xcode 5中不存在,默认情况下处于选中状态 我创建了一个测试项目,然后在ViewController上添加了一个UITableView,框架设置为与view相同的大小,并添加了约束 Xcode 6 您可以在这里看到,尽管tableview的框架与视图相同,但Xcode建议添加-16作为约束,而Xcode 5建议添加间距0 现在,当您取消选中“约束到边距”选项时,它的行为与Xcode 5相同,建议添加0作为约束

我正在使用自动布局和约束,发现在Xcode 6中有一个
约束到边距
选项,该选项在Xcode 5中不存在,默认情况下处于选中状态

我创建了一个测试项目,然后在ViewController上添加了一个
UITableView
,框架设置为与view相同的大小,并添加了约束

Xcode 6 您可以在这里看到,尽管tableview的框架与视图相同,但Xcode建议添加-16作为约束,而Xcode 5建议添加间距0

现在,当您取消选中“约束到边距”选项时,它的行为与Xcode 5相同,建议添加0作为约束

另外,我发现,一旦我在选中“约束到边距”的情况下添加了约束,我就无法在Xcode 5中打开情节提要文件,因此在Xcode 6中它肯定是新的

希望我能正确地解释我的问题。我想了解“限制保证金”的实际用途,以及我应该和不应该使用它的时间。如果事情非常简单和明显,我向你道歉

编辑


我在中找到了一些关于布局边距的信息,我想知道这是否与此相关。

在iOS 8中,您现在可以选择定义相对于预定义边距到superview边界的约束,而不是superview边界本身。是的,它与您在文档中指出的布局页边距完全相关。一个优点是,您可以动态地重新定义页边距,或者为每种设备重新定义页边距,布局将相应地更新,而无需修改约束

何时使用:当您想利用这种新的灵活性时


何时不使用:适用于任何在iOS 7或更低版本上运行的应用程序

UIView上的属性是:
layoutMargins
。看。基本上,如果布局边距为8,8,8(默认值),则前导空间为0的约束到容器边距的x位置将为8请注意,这仅在iOS8或更高版本上可用。

对于不希望其约束转到容器边距的所有人:

CTRL+单击+拖动以显示约束创建弹出窗口

如果菜单显示默认情况下创建对边距的约束,请按住option/alt以允许对容器而不是容器边距进行约束。


现在,它将显示创建约束而不是边界的选项。这在我的使用上要快得多。

我完全不明白为什么人们抱怨“在iOS 8之前的任何产品上,利润率都会导致彻底崩溃。”

在xib文件或故事板中设置与边距相关的约束不会使你的应用程序在iOS7上崩溃,也不会使你的iOS7设备上的UI有所不同,只要不触摸代码中的
ui视图.layoutMargins
ui视图.preserveSPerviewLayoutMargins
属性

iOS8中的利润率是多少 布局边距表示布局系统在布局子视图时可以使用的
ui视图的内部周围的填充,以确保视图边缘和子视图之间留有间隙。在这方面,它非常类似于CSS中与块关联的padding属性

默认情况下,
ui视图
每侧有8个点的布局边距,这不能在界面生成器中更改。但是,通过设置代码中的
UIView.layoutMargins
属性(仅在iOS8上可用),您可以调整这些值

您可以让IB使用编辑器>画布>显示布局矩形来显示边距:

页边距可用于帮助布局视图和子视图。默认情况下,每个
UIView
都带有页边距,但它们仅在设置与页边距相关的约束时影响视图的放置

如何使用边距 在Interface Builder中使用页边距的唯一方法是在配置约束时选中相对于页边距的选项。这就是在布置视图时如何引导约束使用边距而不是边

让我们看一下在视图及其子视图之间设置前导约束的四种不同方法。对于每个约束,我们查看所描述的第一个关联将是子视图的前导,而第二个关联将是superview的前导。您需要密切注意的是每个约束端点的相对于边距的选项的选中和取消选中状态,因为这定义了约束是绑定到边距还是视图的边

  • 第一项(取消选中),第二项(选中):在本例中,我们声明子视图的左边缘应与superview的左边缘对齐(如图所示)
  • 第一项(取消选中),第二项(取消选中):都使用边,而不是边距。在本例中,我们声明子视图的左边缘应与superview的左边缘对齐
  • 第一项(选中),第二项(取消选中):在本例中,我们声明子视图的左边距应与superview的左边距对齐。这种布局实际上使子视图与超级视图重叠
  • 第一项(检查),第二项(检查)。这实际上与案例2具有相同的效果,因为子视图和超级视图都具有相同的默认边距。我们声明子视图的左边距应与superview的左边距对齐
  • 利润有什么好处 此新功能(iOS8)仅在您决定使用边距时影响UI开发

    通过使用边距,您可以通过更改单个特性的值来调整与共享超级视图共享公共关系的多个子视图的放置。这是
    self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);