iOS Auto Layout - Невозможный случай? - PullRequest
0 голосов
/ 13 февраля 2020

Мне нужно создать стартовый экран раскадровки с 3 видами. Средний вид должен иметь соотношение 4: 3, вид сверху должен занимать 30% оставшегося пространства, а нижний вид должен занимать оставшуюся часть пространства.

Например, когда вид 375 x 667 ...

Средний вид: 375 x 4/3 = 500

Вид сверху (667 - 500) * 30% = 50

Вид снизу: 667 - 500 - 50 = 117

Я перепробовал все, что мог (включая использование UIStackView), но не могу найти способ заставить его работать.

Возможно ли это? Что было бы правильным путем?

Большое спасибо!

enter image description here

Ответы [ 3 ]

0 голосов
/ 13 февраля 2020

Возможно, вы можете заархивировать это, используя равные ограничения по высоте с правильным множителем. Ниже приведены шаги в вашем случае:

  • Добавьте все 3 вида с требуемым размером в соответствии с размером экрана.
  • Установите ограничение высоты равного вида для первого вида для супер-вида, как показано ниже. (Множитель устанавливается с учетом того, что вы работаете на виде с размером 375 x 667. Измените его при необходимости.)

enter image description here

  • При необходимости установите верхнее, левое и правое ограничения равными нулю.
  • Установите ограничение высоты равного обзора для второго вида в супер-вид, как показано ниже.

enter image description here

  • Добавление других отсутствующих ограничений во второй и нижний виды.

Все готово.

0 голосов
/ 14 февраля 2020

Чтобы получить высоту оставшегося пространства, я добавил скрытый вид сверху с соотношением сторон 4: 3 и еще один скрытый вид внизу, который занимает остальное пространство. Затем я могу использовать ограничения высоты относительно этого второго скрытого вида для компоновки моих видов.

0 голосов
/ 13 февраля 2020

Вы не можете легко сделать это с помощью автоматического размещения, как вы правильно сказали, потому что вещь, которую ваш первый вид должен занимать 30%, не является непрерывным фрагментом пространства. Вы можете сделать это, добавив два невидимых вида, чтобы измерить «оставшееся пространство» с высотой одного вида, на которое вы можете взять 30%, но это не стоит проблем. Просто реализуйте свои требования в коде непосредственно в layoutSubviews или аналогичном.

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