我添加了一个 "align" 约束,但是 Xcode 添加了一个 "pin" 约束自动布局
I add a "align" constraint, but Xcode add a "pin" constraint autolayout
当我们添加约束时,我们可以选择自动布局工具栏中的 "Align" 按钮或 "Pin" 按钮。
在我的故事板中,如果我在滚动视图和他的容器之间添加一个新的对齐约束 "Bottom edges"。
这个约束的图标是2个方格加一条线
但是之后,在我的滚动视图的约束列表中,图标不同了:
图标是 "Pin" 图标。
我不明白为什么。
还有一个问题,我认为是相关的:"Align bottom" 和 "Bottom space" 之间有什么区别?
Pin 和 Align 只是抽象,以便更容易理解您正在设置的内容。实际上,约束是两个对象的属性之间的关系。您在 Interface Builder 中使用 align 或 pin 指定的内容将转换为 NSLayoutConstraint
对象。
以编程方式完成时,没有 pin 或 align 选项,您只需指定对象及其属性(.Top
、.Bottom
、.CenterX
等)、关系(.Equal
、.GreaterThanOrEqual
、.LessThanOrEqual
)、常数和乘数。
例如,这里是如何对齐两个按钮的底部:
NSLayoutConstraint(item: button1, attribute: .Bottom, relatedBy: .Equal, toItem: button2, attribute: .Bottom, multiplier: 1.0, constant: 0.0)
如果两个对象是兄弟对象,则它们的底部被认为是对齐。如果一个对象是另一个对象的子视图,那么它被认为是BottomSpace。两者都只是一个视图的 .Bottom
与另一个视图的 .Bottom
之间的关系。
当您单击约束并在属性检查器中查看它时,您会看到用于创建 NSLayoutConstraint
.
的值
当我们添加约束时,我们可以选择自动布局工具栏中的 "Align" 按钮或 "Pin" 按钮。
在我的故事板中,如果我在滚动视图和他的容器之间添加一个新的对齐约束 "Bottom edges"。
这个约束的图标是2个方格加一条线
但是之后,在我的滚动视图的约束列表中,图标不同了:
图标是 "Pin" 图标。
我不明白为什么。
还有一个问题,我认为是相关的:"Align bottom" 和 "Bottom space" 之间有什么区别?
Pin 和 Align 只是抽象,以便更容易理解您正在设置的内容。实际上,约束是两个对象的属性之间的关系。您在 Interface Builder 中使用 align 或 pin 指定的内容将转换为 NSLayoutConstraint
对象。
以编程方式完成时,没有 pin 或 align 选项,您只需指定对象及其属性(.Top
、.Bottom
、.CenterX
等)、关系(.Equal
、.GreaterThanOrEqual
、.LessThanOrEqual
)、常数和乘数。
例如,这里是如何对齐两个按钮的底部:
NSLayoutConstraint(item: button1, attribute: .Bottom, relatedBy: .Equal, toItem: button2, attribute: .Bottom, multiplier: 1.0, constant: 0.0)
如果两个对象是兄弟对象,则它们的底部被认为是对齐。如果一个对象是另一个对象的子视图,那么它被认为是BottomSpace。两者都只是一个视图的 .Bottom
与另一个视图的 .Bottom
之间的关系。
当您单击约束并在属性检查器中查看它时,您会看到用于创建 NSLayoutConstraint
.