2017-05-05 34 views
-1

在stackoveflow上的this question中,他解释了这三个选项的不同之处。 但我不清楚“使用当前画布值”。AutoLayout中的“使用当前画布值”是什么?

他对此的解释是当前画布值从当前在画布上显示对象的方式复制值。

但是,当我在我的xib文件上进行实验时,手动入口和此“使用当前画布值”选项没有区别。 我希望通过选择“使用当前画布值选项”来输入值后,可以在引脚屏幕上获得一定的值。但是,没有什么特别的事情发生。 任何人都可以解释吗?

+0

“没有区别”因为您的设置与画布上对象的显示方式不是“不同步” 。 – matt

回答

1

你没有看到任何区别,因为在你的情况下没有区别。如果你想看看使用画布的值是什么,你需要使有所不同。

要做到这一点,试试这个:

  • 添加视图,并完全用别针把它,像这样的按钮:

enter image description here

  • 现在拖动按钮向下和对。

现在我们不同步!你的约束说一件事,但你的框架说另一件事。Interface Builder的报告这一点,让你做什么选择:

enter image description here

现在想想前两个选项的意思是:

  • 如果你更新框架,按钮跳回到哪里:约束获胜。

  • 但是,如果您更新约束,则按钮将保持原样 - 并且约束值更改为匹配其新位置。

好,使用画布价值就像是更新约束:

enter image description here

在我的屏幕截图,该限制是8,但我们已经搬进了按钮,这样的距离实际上是42。如果我们选择使用画布值,该按钮不会移动,但约束值更改为42.

0

当前画布值将约束指定为从对象的相应边缘到其最近邻居的相应边缘的距离。这些是默认值,你看,当你打开添加新的约束接口

enter image description here

在画布中,标签顶部和视图顶部之间帆布距离为260,标签左视图,左边是207等等。这些值的画布值选项。

下面是一个例子,如果你仍然想知道:创建一个新项目,并添加一个标签/按钮/等屏幕。如果您手动指定一个值,请说42,并添加约束。它会自动移动元素,使两个元素之间的间距为42个单位。

如果您现在删除该约束,并打开添加新的约束界面,您会注意到以前固定了42的位置,它将显示42.自从您手动将距离设置为42之后,视图并未移动,所以画布距离是94个单位。

0

Use Current Canvas Value表示使用与您在Interface Builder屏幕上所具有的值相匹配的值。