2015-01-11 2 views
0

Когда мы добавляем ограничения, у нас есть выбор между кнопкой «Выровнять» на панели автоматического макета или кнопкой «Pin».Я добавляю ограничение «align», но Xcode добавляет автосогласование ограничений «pin»

В моей раскадровке, если я добавлю новое ограничение выравнивания «Нижние края» между scrollview и его контейнером.

Align

Значок этого ограничения 2 квадрата и линия.

Но после того, как в списке ограничений моего Scrollview значок отличается:

Pin

Значок значок "Pin".

Я не понимаю, почему.

Еще один вопрос, я думаю, это связано: в чем разница между «Выровнять дно» и «Нижнее пространство»?

ответ

4

Pin и Align просто абстракции, чтобы сделать его легче понять, что вы настраиваете. В действительности ограничение является отношением между атрибутами двух объектов. То, что вы указали в Interface Builder с выравниванием или выводом, преобразуется в объект NSLayoutConstraint.

Когда делается программно, нет штырьковый или Align вариант, вы просто указать объекты, их атрибуты (.Top, .Bottom, .CenterX и т.д.), соотношение (.Equal, .GreaterThanOrEqual, .LessThanOrEqual), константа и множитель.

Например, вот как выравнивать дно из двух кнопок:

NSLayoutConstraint(item: button1, attribute: .Bottom, relatedBy: .Equal, toItem: button2, attribute: .Bottom, multiplier: 1.0, constant: 0.0) 

Если два объекта являются братьями и сестрами, то их дно считаются выровнены. Если один объект является подзором другого объекта, то он считается Дно пространства. Оба являются только отношением между .Bottom одного вида к .Bottom другого вида.

Когда вы нажимаете на ограничение и просматриваете его в Инспекторе атрибутов, вы видите значения, которые используются для создания NSLayoutConstraint.

Align button bottoms

Смежные вопросы