Xcode — изображение и текст (разной длины) всегда размещаются по центру

#objective-c #autolayout

#objective-c #автоматическое описание

Вопрос:

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

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

Когда страна пользователя - Соединенные Штаты

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

Комментарии:

1. В чем вопрос?

2. В качестве примечания, если все выровнять (слева), это лучший стиль, чем центрирование, выглядит более согласованным при прокрутке пользователем.

Ответ №1:

Это довольно просто с автоматической компоновкой. Вставьте изображение и текст в другое представление. Добавьте следующие ограничения:

  • Фиксированное расстояние между изображением и текстом.
  • Вверху, слева и внизу изображения 0 pt для представления контейнера.
  • Правая сторона текста 0 pt для представления контейнера.
  • Вид контейнера, центрированный по горизонтали в контейнере
  • Некоторое ограничение, определяющее координату y вида контейнера (зависит от того, что вы пытаетесь сделать — центрировано по вертикали, расстояние сверху до супервизора и т. Д.).

Комментарии:

1. Мне любопытно узнать, как это объясняет длину текста / ширину, занимаемую текстом?

2. Метка вычисляет размер текста и возвращает его -intrinsicContentSize , который механизм компоновки передает в решатель. То же самое происходит с размером изображения, если вы явно не задаете размер для представлений изображения, но обычно лучше использовать собственный размер ресурсов изображения, чтобы не получить артефакты масштабирования.