У меня возникла проблема с использованием автоматического изменения размера для макета ряда меток.
См. изображение ниже.

Я хочу, чтобы первая метка занимала всю ширину. Метка с именем "Широта:" будет узкой, постоянной ширины, выровненной по левому краю.
Метка с именем "Lon:" будет узкой, постоянной ширины, выровненной горизонтально по центру.
Метки "55.000" и "-95.000" будут иметь переменную ширину, в основном заполняя пространство между краями дисплея и другими метками ("Широта:" и "Долгота:").
Я думал, что правильно использовал ограничения автоматического изменения размера, но когда дисплей наклонен в альбомную ориентацию, автоматическое изменение размера имеет неожиданные результаты, метки которых перекрывают друг друга.
Любая помощь будет принята с благодарностью.
Использование универсального приложения iOS в Xcode 9.2
Ответ 1 · LGP
Я не думаю, что это возможно с помощью автоматического изменения размера, потому что у вас есть только два варианта позиционирования: либо закрепить представление в фиксированной позиции, либо переместить его пропорционально размеру. Невозможно прикрепить его к центральному положению, поэтому ваш третий вид не будет располагаться правильно при изменении размера. Кроме того, два представления с гибкой шириной будут пропорциональны ширине родительского представления, в то время как вы действительно хотите, чтобы они имели то же самое значение, что и родительская ширина / 2, поэтому вы не можете добиться идеального размера. .
Для ее решения нужно использовать либо авто верстку с ограничениями, либо делать верстку по коду в layoutSubviews(). Любой из них на самом деле довольно легко решить вашу проблему.
ОБНОВЛЕНИЕ: я протестировал его с динамическим изменением размера представления. Вот как это выглядит. Первое изображение является начальным условием с шириной просмотра 300. Второе изображение, когда ширина изменена на 600. Значения внизу - это сначала ширина представления, затем каждый из четырех "сегментов" x позиция и ширина.