Мне нужно создать три динамических столбца, каждый с фиксированным процентом от общей ширины. Не трети, а разные значения. Например, на следующем рисунке показаны три столбца: первый - шириной 42%, второй - шириной 25%, а третий - шириной 33%.
Для 600 пикселей на контроллере представления это будет 252, 150 и 198 пикселей соответственно.
Однако для любых последующих размеров дисплея (например, iPhone 4 в альбомной ориентации (ширина 960) или iPad 2, портретная (ширина 768)), я хотел бы, чтобы относительные проценты были одинаковыми (не указанная выше ширина в пикселях).
Есть ли способ сделать это с помощью раскадровки (т.е. без кода)? Я могу легко сделать это в коде, но моя цель - поместить как можно больше этой логики отображения в раскадровку.
источник
Когда Apple представила UIStackView, работа стала намного проще.
Метод 1: Использование пера / раскадровки:
Вам нужно просто добавить три представления в конструкторе интерфейса и встроить их в стек
Выберите stackView и задайте ограничение с ведущей, конечной, верхней и равной высотой с помощью safeArea
Щелкните область инспектора атрибутов и установите StackView по горизонтали и распределению для пропорционального заполнения
[ 3
Задайте ограничение трех видов с ведущими, замыкающими, верхними, нижними и соответствующими сторонами.
Метод 2: программно:
Вывод:
Работает с пейзажем и портретом
Демо-проект - https://github.com/janeshsutharios/UIStackView-with-constraints
https://developer.apple.com/videos/play/wwdc2015/218/
источник
Я думаю, что это можно объяснить более подробно, чтобы его было легче применить к любому количеству представлений, требующих фиксированного процентного расположения в супервизоре.
Крайний левый вид
SuperView.Leading
SuperView.Height
Промежуточные просмотры
SuperView.Height
left
справа от соседаСамый правый вид
left
справа от соседаright
кSuperView.Trailing
Все просмотры
Top Layout Guide.Top
иTop Layout Guide.bottom
. В ответе выше отмечено, что это также можно сделать, установив равную высоту для соседнего вида.источник