Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Автоматическое изменение размера строки меток в Xcode дает неожиданные результаты

Автор вопроса: Guy FisherОтветов: 1

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

См. изображение ниже.

введите здесь описание изображения

Я хочу, чтобы первая метка занимала всю ширину. Метка с именем "Широта:" будет узкой, постоянной ширины, выровненной по левому краю.

Метка с именем "Lon:" будет узкой, постоянной ширины, выровненной горизонтально по центру.

Метки "55.000" и "-95.000" будут иметь переменную ширину, в основном заполняя пространство между краями дисплея и другими метками ("Широта:" и "Долгота:").

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

Любая помощь будет принята с благодарностью.

Использование универсального приложения iOS в Xcode 9.2

  • Выложи фото своих ограничений. Почему вы используете 4 ярлыка вместо 2? Почему бы просто не указать в тексте метки Lat:? Вы знаете, что такое stackView? DoesData 25.03.2018
  • Скриншоты ограничений показаны на снимке экрана выше. Узкие метки остаются Lat: и Long:. Те, что 55.0000 и -95.0000, рассчитываются в приложении. Да, я знаю представление стека, но я хочу, чтобы метки Lat: и Lon: были узкими, а две другие менялись по ширине в зависимости от используемого дисплея и его ориентации. Guy Fisher 25.03.2018
  • Это изображение не дает значения, назначенного ограничениям или приоритету. DoesData 25.03.2018
  • Я не использую ограничения, но использую ограничения автоматического изменения размера. Guy Fisher 25.03.2018

xcodeiosautoresizelabels

Ответы

Ответ 1 · LGP

Я не думаю, что это возможно с помощью автоматического изменения размера, потому что у вас есть только два варианта позиционирования: либо закрепить представление в фиксированной позиции, либо переместить его пропорционально размеру. Невозможно прикрепить его к центральному положению, поэтому ваш третий вид не будет располагаться правильно при изменении размера. Кроме того, два представления с гибкой шириной будут пропорциональны ширине родительского представления, в то время как вы действительно хотите, чтобы они имели то же самое значение, что и родительская ширина / 2, поэтому вы не можете добиться идеального размера. .

Для ее решения нужно использовать либо авто верстку с ограничениями, либо делать верстку по коду в layoutSubviews(). Любой из них на самом деле довольно легко решить вашу проблему.

ОБНОВЛЕНИЕ: я протестировал его с динамическим изменением размера представления. Вот как это выглядит. Первое изображение является начальным условием с шириной просмотра 300. Второе изображение, когда ширина изменена на 600. Значения внизу - это сначала ширина представления, затем каждый из четырех "сегментов" x позиция и ширина.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы