У меня есть подробный Средний пост на эту тему.Вы можете найти там пошаговое руководство.Но я также добавляю краткое объяснение здесь:
У вас должны быть все необходимые ограничения, настроенные для представления прокрутки к его суперпредставлению.Затем идет ваше представление стека, которое является вложенным представлением этого представления прокрутки.Возможно, вы также прикрепили все четыре края этого стека к представлению с прокруткой.Но здесь возникает реальная проблема.
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](https://i.stack.imgur.com/P8fjb.png)