为了账号安全,请及时绑定邮箱和手机立即绑定

Xcode 6中的童话板中的“限制页边距”是什么?

Xcode 6中的童话板中的“限制页边距”是什么?

iOS
元芳怎么了 2019-07-26 15:14:01
Xcode 6中的童话板中的“限制页边距”是什么?我正在使用autolayout和约束,并发现有一个Constrain to margins选项在Xcode 6中,该选项在Xcode 5中不存在,并在默认情况下被选中。我创建了一个测试项目,然后添加了一个UITableView在框架设置为与视图大小相同并添加约束的ViewController上Xcode 6您可以在这里看到,尽管tableview具有与视图Xcode建议添加16作为约束的相同的框架,而Xcode 5则建议添加间距0。现在,当您取消选中“约束到边距”选项时,它的行为与xcode 5相同,并建议添加0作为约束。此外,我发现,一旦我添加约束,约束到边距检查,我就不能再打开Xcode 5中的故事板文件,所以它肯定是Xcode 6中的新东西。希望我能恰当地解释我的问题。我想了解“限制保证金”实际上做了什么,我应该和不应该使用它。如果这件事很简单很明显的话,我真的很抱歉。编辑我在在这里讨论我想知道这是否与此有关。
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

我完全不明白为什么人们会抱怨在iOS 8之前,利润率会直接导致崩溃。"

在xIB文件或故事板中设置相对于边距的约束。让你的应用程序在iOS 7上崩溃在iOS 7设备上也不能改变UI,只要您不碰UIView.layoutMarginsUIView.preservesSuperviewLayoutMargins属性在代码中。

iOS 8中的利润率是多少?

布局边距表示在内部一种UIView布局系统在布局子视图时可以使用-以确保在视图和子视图的边缘之间留下空白。在这方面,它非常类似于CSS中与块关联的填充属性。

默认情况下,UIView每边有8个点的布局边距,这是不能更改的。接口生成器..但是,通过设置UIView.layoutMargins属性(仅在iOS 8上可用),您可以调整这些值。

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

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

如何使用边距

在InterfaceBuilder中使用边距的唯一方法是检查相对于保证金选项,同时配置约束。这就是如何将约束定向到在布局我的视图时,使用边距而不是边缘。

让我们看一看在视图和子视图之间设置主导约束的四种不同方法。对于每个约束,我们将检查描述的第一个关联将是子视图的领导,以及第二个将是SuperView的领导..您要密切注意的是相对于保证金选项,因为这定义了约束是绑定到视图的边距还是边缘。

  1. 第一项(取消检查),第二项(检查):在本例中,我们声明子视图的左侧边缘应该与SuperView的左边对齐(如此图像所示)。
  2. 第一项(取消检查),第二项(取消检查):都使用边缘,

    无保证金

    ..在本例中,我们声明子视图的左侧边缘应该与SuperView的左侧边缘对齐。
  3. 第一项(检查),第二项(取消检查):在本例中,我们声明子视图的左边框应该与SuperView的左侧边缘对齐。这种布局实际上使子视图与SuperView重叠。
  4. 第一项(检查),第二项(检查)。这实际上具有与案例2相同的效果,因为子视图和SuperView都有相同的默认边距。我们宣布子视图的左边距应该与SuperView的左边距对齐。

利润率的好处是什么?

这个新特性(IOS 8)只有在您决定使用利润率时才会影响UI开发。

通过使用边距,您可以通过更改单个属性的值来调整与共享的超级视图共享公共关系的多个子视图的位置。这明显优于使用固定值设置所有相关约束,因为如果您需要更新所有的间距,而不是一个地更改每个值,您可以通过使用像下面这样的一行代码更新SuperView的边距来同时修改所有相关的位置:

self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);

为了说明这个好处,在下面的情况下,所有子视图的左边沿对齐了他们的SuperView的左边。因此,更改SuperView的左边距将同时影响所有子视图。




查看完整回答
反对 回复 2019-07-27
?
慕沐林林

TA贡献2016条经验 获得超9个赞


在IOS 8中,您现在可以选择相对于SuperView边界的预定义边距来定义约束,而不是SuperView的边界本身。是的,它与您在文档中指向的布局边距完全相关。一个优点是您可以动态地重新定义您的边距,或者为每种类型的设备重新定义不同的边距,并且布局将相应地更新,而不需要修改约束。

什么时候使用它:当你想利用这个新的灵活性。

什么时候不使用它:对于任何针对iOS 7或更低版本的应用程序。



查看完整回答
反对 回复 2019-07-27
?
冉冉说

TA贡献1877条经验 获得超1个赞

UIView上的属性是:layoutMargins..见苹果文档..基本上,如果布局边距为8、8、8、8(默认),则以0引导空间到容器边距的约束的x位置为8。请注意,这只能在iOS 8或更高版本上使用。

对于每个不希望自己的约束进入容器边距的人:

Ctrl+单击+拖动,以显示创建约束弹出。

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

现在,它将显示创建约束的选项,而不是对边距的限制。这是方式,道路我的用法更快。



查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 350 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信