Можно ли использовать множители на якорях? - PullRequest
0 голосов
/ 12 октября 2018

Можно ли использовать множители на якорях и центрах?Для меня, по крайней мере, для начала это не имело никакого смысла, но потом я немного покопался и увидел, что это действительно работает.

Итак, позвольте мне получить этот пролив.Скажите, если я ошибаюсь, пожалуйста.

1) Ведущий с множителем 1 = Трейлинг?Я видел, что ведение с множителем 0,1 означает 10% внутри (в зависимости от ширины).

2) Центр с множителем 2 = Трейлинг?Предполагая, что центр означает конечный / 2 или ведущий * 0,5?

Насколько я узнал, множитель фактически умножается на ширину / высоту в зависимости от оси.

Это означает, чтоследующие ограничения эквивалентны?

C1.axis = C2.axis * M + C <=> C1.axis = C2.axis + axisLength * M + C?

Таким образом, множитель просто добавляет это кратное ширине или высоте?

ОБНОВЛЕНИЕ:

То есть, чтобы очистить информацию с информацией из принятого ответа.

CenterX_or_Y = Width_or_Height / 2
Trailing - Leading = Width  (in therms of size)
Bottom   - Top     = Height (in therms of size)

Когдавы фактически используете множители на Leading / Trailing / Top / Bottom, вы фактически используете множители на вышеуказанных размерах (ширина или высота).

1 Ответ

0 голосов
/ 12 октября 2018

Использование множителей для размеров довольно просто ... Я хочу, чтобы мое подпредставление было 80% ширины его суперпредставления, поэтому я просто установил равную ширину с множителем 0.8

Тем не менее, это может привести к путанице при использовании множителей на ведущем / трейлинг-центре / и т. Д.

Из Apple Руководство по автоматической компоновке :

enter image description here

Так, например, скажем:

Red Leading is set to Blue Trailing, Constant 8, Multiplier 1
Blue Leading is at 0, and width is 100

Red's Leading will be (1.0 x 100) + 8 = 108

Для ясности, однако, трейлинг синих не совпадает с его шириной.

Предположим, лидирующие позиции синихна 50?Если его ширина равна 100, трейлинг будет равен 150, поэтому:

Red's Leading will be (1.0 x 150) + 8 = 158

Теперь верните «Ведущее» синих на 0, но давайте изменим множитель на 0,75

Red's Leading will be (0.75 x 100) + 8 = 83

и, если у лидера Blue 50, то у Blue трейлинг равен 150:

Red's Leading will be (0.75 x 150) + 8 = 120.5

Просто вернитесь к формуле, чтобы все было прямо:

item1.attribute = multiplier * item2.attribute + constant

Вот наглядный примеруточнить.Все метки 100x40, а каждая зеленая метка ограничена Green.Leading = Blue.Trailing + Constant: 8

enter image description here

Для Set # 1,множитель 1.0 - для наборов № 2, № 3 и № 4, множитель 0.5.

комплект 1, ведущий синего цвета 0, множитель Грина 1 ..Это то, что обычно видят, и это очевидно - зеленый цвет находится в 8 пунктах от синего трейлинга (Blue.Leading + Blue.Width) или

1.0 * (0 + 100) = 100
100 + 8 = 108

Set 2, Blue's Leading -по-прежнему 0, но множитель Грина равен 0.5 ... поэтому Грин составляет 8 пунктов от трейлинга Синего, то есть (Blue.Leading + Blue.Width), * 0,5 или

0.5 * (0 + 100) = 50
50 + 8 = 58

Установите 3, Лидерство Синего теперь 80, Множитель Грина по-прежнему 0.5 ... так что Грин на 8 пунктов от Трейлинга Синего, который равен (Blue.Leading + Blue.Width), * 0.5 или

0.5 * (80 + 100) = 90
90 + 8 = 98

Набор 4 выглядит странно.Лидерство у Blue теперь 200, множитель Green по-прежнему 0.5 ... так что Green составляет 8 пунктов от Trailing Blue, то есть (Blue.Leading + Blue.Width), * 0.5 или

0.5 * (200 + 100) = 150
150 + 8 = 158

Как мы видим, в Сете № 4 зеленый цвет оказывается Левым от синего, что является правильным, но не настолько интуитивным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...