Понимание множителя в автоматическом макете для использования относительного позиционирования

Я пытаюсь понять, как можно использовать 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% ниже дна другой метки, а не устанавливать ее на фиксированную константу.

Ответы на вопрос(3)

Ваш ответ на вопрос