Я пытаюсь понять, как можно использовать Auto Layout для позиционирования элементов по отношению к другим представлениям в процентах.
Например, недавно я узнал, что вы можете указать дно представления, должно лежать на 4% выше, чем нижнее нижнее нижнее значение, используя это:
self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 0.96, constant: 0))
Это имеет смысл для меня, потому что множитель из 1 выравнивает его прямо на дне представления, поэтому вы можете уменьшить эту сумму на 4 процента, изменив множитель на 0,96.
Но как вы можете сделать то же самое в другом направлении? Вы хотите указать верхнюю часть этикетки, которая должна начинаться на 4% вниз сверху. Если вы используете ту же строку, но изменяете атрибуты на .Top
, это означает, что она будет на 4% выше, чем верх супервизора (но на самом деле она не сдвигает ее с экрана). Вы не можете иметь отрицательный множитель, я не думаю, и я не верю, что значение больше 1 делает что-либо, когда константа равна 0. Итак, как вы это настроили?
У меня есть тот же вопрос для реализации ведущего и конечного. Трейлинг - это просто. Если вы хотите это на 10% справа:
self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 0.9, constant: 0))
Это имеет смысл, потому что вы набираете его на 0,1 или 10% вместо того, чтобы полностью выравнивать значение 1.0. Но как вы делаете то же самое для руководства? Я думал, что вы можете установить метку, ведущую относительно трейлинг-представления, а затем установить множитель в 0,1. На мой взгляд, это означало бы, что ярлык начнется очень далеко, а затем набирается на 90%, поэтому получая желаемые 10% слева. Но это не так, я не знаю, почему.
Можете ли вы объяснить, как это работает, как правильно использовать множитель для получения этих относительных макетов?
Чтобы упростить задачу, скажем, вы бы хотели создать ярлык с верхним и нижним 10% высоты надписи и длиной 10% ширины супервизора. На iPhone в портрете будет больше надписи над и под меткой, чем есть прокладка слева и справа от нее, например (да, она нарисована в масштабе):
Но пусть говорят на iPad, это будет показано в представлении, что идеальный квадрат. Поэтому набивка будет одинаковой для всех вокруг, так вот:
Вопрос в том, как вы определяете такие ограничения как динамические по значению, в отличие от установки фиксированного значения для константы. Я уже знаю, как делать дно и трейлинг, но топ и ведущий меня озадачивают. Я надеюсь понять, как использовать множитель для более продвинутых макетов, например, указание вершины этикетки должно лежать на 10% ниже нижней нижней метки, а не устанавливать ее на фиксированную константу.