#objective-c #autolayout
#objective-c #автоматическое описание
Вопрос:
Я хочу показать текущую страну пользователя с флагом и названием вверху, я хочу, чтобы они были центрированы, как если бы это было одно изображение. Проблема, с которой я сталкиваюсь, заключается в том, что каждое название страны, конечно, не равно по длине. Я хочу, чтобы текст и изображение всегда располагались по центру, поэтому общая ширина флага и названия будет зависеть от длины названия страны.
Смотрите Изображения ниже, чтобы понять, что я имею в виду визуально — белый фон — это ширина экрана.
Комментарии:
1. В чем вопрос?
2. В качестве примечания, если все выровнять (слева), это лучший стиль, чем центрирование, выглядит более согласованным при прокрутке пользователем.
Ответ №1:
Это довольно просто с автоматической компоновкой. Вставьте изображение и текст в другое представление. Добавьте следующие ограничения:
- Фиксированное расстояние между изображением и текстом.
- Вверху, слева и внизу изображения
0 pt
для представления контейнера. - Правая сторона текста
0 pt
для представления контейнера. - Вид контейнера, центрированный по горизонтали в контейнере
- Некоторое ограничение, определяющее координату y вида контейнера (зависит от того, что вы пытаетесь сделать — центрировано по вертикали, расстояние сверху до супервизора и т. Д.).
Комментарии:
1. Мне любопытно узнать, как это объясняет длину текста / ширину, занимаемую текстом?
2. Метка вычисляет размер текста и возвращает его
-intrinsicContentSize
, который механизм компоновки передает в решатель. То же самое происходит с размером изображения, если вы явно не задаете размер для представлений изображения, но обычно лучше использовать собственный размер ресурсов изображения, чтобы не получить артефакты масштабирования.