Objective-c: динамический размер UIStackView в зависимости от его содержимого - PullRequest
0 голосов
/ 24 мая 2018

У меня есть UIStackView, который находится внутри прокрутки.содержимое stackView является динамическим, в зависимости от того, сколько видов создано и добавлено с помощью метода addArrangedSubview.если у меня есть несколько подпредставлений, между ними так много промежутков, и если у меня слишком много просмотров, они сжимаются.

У меня есть:

_viewController

| __ view

| ____ scrollView

| ______ stackView (динамическое содержимое)

Я установил для стека:

  • Выравнивание: заливка
  • Распределение: равный интервал
  • Интервал: 5 и, конечно, ограничения сверху / снизу / вперед / сзади

Я хочу увеличивать размер UIStackview при каждом добавлении представления и сохранять размер моих добавленных подпредставлений.Может быть, чего-то не хватает или у меня плохое понимание ... кто-то может объяснить мне, как это сделать?

Я работаю с целью-c

1 Ответ

0 голосов
/ 24 мая 2018

У меня есть подробный Средний пост на эту тему.Вы можете найти там пошаговое руководство.Но я также добавляю краткое объяснение здесь:

У вас должны быть все необходимые ограничения, настроенные для представления прокрутки к его суперпредставлению.Затем идет ваше представление стека, которое является вложенным представлением этого представления прокрутки.Возможно, вы также прикрепили все четыре края этого стека к представлению с прокруткой.Но здесь возникает реальная проблема.

UIScrollView не работает, как другие виды.Он имеет contentView.Это представление содержимого отвечает за поведение при прокрутке.Если имеется больше содержимого, которое не помещается в рамку представления прокрутки, чем включена прокрутка.

Таким образом, для правильной настройки представления содержимого, представление прокрутки должно знать размерпросмотр содержимого, чтобы он знал, когда прекратить прокрутку. Здесь размер означает действительные значения width и height.Но этот размер не может быть определен из установки ограничения, потому что они рассчитываются динамически механизмом автоматической разметки.

В вашем случае представление стека действует как представление содержимого представления прокрутки.Возможно, вы прикрепили все края стека к его суперпредставлению - UIScrollView.Но этого недостаточно для просмотра прокрутки, чтобы рассчитать размер контента.Вы также должны указать:

  • width & height - если ваше представление прокрутки прокручивается по обеим осям
  • width - если вы хотите прокручивать вертикально и ограничиватьгоризонтальная прокрутка
  • height - если вы хотите прокрутить горизонтально и ограничить прокрутку по вертикали

Поскольку вам нужна горизонтальная прокрутка, вы должны ограничить вертикальную прокрутку, указав height изпредставление стека, равное представлению прокрутки (оно не всегда должно быть той же высоты, что и представление прокрутки, но должно охватывать всю высоту представления прокрутки другими средствами).И вам также понадобится заполнитель x-axis ограничение, чтобы сделать Interface Builder счастливым.Фактическое width представления содержимого будет охватываться вложенными представлениями, которые будут добавлены в представление стека.

Важно: Вы должны добавить горизонтально в контейнере ограничение для стека и сделать его заполнителем, который будет удален во время сборки.Вы можете сделать это, выбрав ограничение в структуре документа и открыв инспектор размера , где вы получите флажок Remove at build time.Вы устанавливаете этот флажок, вы готовы к работе.

making a constraint to be placeholder

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...