Многие из приведенных выше ответов вводят в заблуждение или устарели. Начиная с 2017 года (возможно, намного раньше), построитель интерфейса поддерживает представления прокрутки с автоматически измеряемым содержимым. Хитрость заключается в том, что XCode придает особое, нестандартное значение ограничениям между scrollview и содержимым внутри него. Эти «внутренние» ограничения будут , а не фактически влиять на размер контента, как вы могли бы ожидать в противном случае.
Это означает, что вы можете, например, сделайте скроллвью закрепленный в нижней части основного вида с нулевым полем, а также поместите контент скроллвью в нижнюю часть прокрутки с нулевым полем, но на самом деле это не будет растягиваться. Вместо этого контент получит свой собственный размер (подробнее ниже), и это также будет размер прокручиваемой области в представлении прокрутки.
Подумайте об этом так: асимметрия в ограничениях привязки к просмотру прокрутки: ограничения от просмотра прокрутки к «внешнему» (родительскому) миру определяют размер и позицию представления прокрутки как обычно. Но ограничения «внутри» прокрутки действительно устанавливают размер и положение области прокрутки прокрутки, связывая ее с содержимым.
Это совершенно неочевидно, потому что при переходе к настройке ограничений XCode всегда будет предлагать текущий интервал, и вам никогда не придет в голову преднамеренно изменять ограничения, обращенные внутрь и наружу, таким образом, чтобы конфликтовать. Но вы можете и они имеют значение, описанное выше: один управляет макетом прокрутки, а другой управляет размером области прокручиваемого содержимого.
Я случайно наткнулся на это, а затем, увидев, как это работает, привело меня к этой статье, которая полностью объясняет ее и приводит для этого источник документации Apple:
https://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/
Еще одна важная часть информации о самоопределенном размере контента: вы можете почувствовать, что находитесь здесь в зацепке, потому что вы обычно масштабируете свой контент, например, например. ширина родительского представления, но в этом случае родительским объектом является представление прокрутки, и, как описано выше, ограничение не повлияет на размер вашего контента. Ответ здесь состоит в том, чтобы помнить, что вы можете ограничить элементы элементами, которые не являются непосредственно соседними в иерархии вашего представления: например, Вы можете установить ширину вашего представления содержимого равной ширине основного представления, вместо того, чтобы тщетно пытаться заставить представление прокрутки сделать это за вас.