Ключ к использованию UIScrollView
: у вас должна быть «цепочка» ограничений, чтобы позволить автоматическому макету определять .contentSize
представления прокрутки.
Пошагово (мне нравитсяустановить цвета фона во время компоновки, чтобы было легко видеть границы / рамки элементов) ...
Добавьте UIScrollView
(цвет канталупы) к вашему контроллеру представления и ограничьте его 20-все точки вокруг (просто чтобы мы могли видеть, где это):
Добавьте UIView
в качестве ContentView
(Клубничный цвет) как подпредставление прокрутки.Присвойте ему равные ограничения высоты и ширины для вида прокрутки, а ограничения сверху / вперед / сзади / снизу - 0
:
Добавитьваш Title
UILabel
(желтый фон).Ограничить это Top: 30 / Leading: 50 / Trailing: 50
.Добавьте свой Body
UILabel
(желтый фон).Ограничьте его сверху до основания ярлыка заголовка (я использовал 200
) и Leading: 10 / Trailing: 10
.Добавьте свой UIButton
(светло-серый фон).Ограничьте его верх над нижней частью тела (я использовал 50
), и Leading: 50 / Trailing: 50
:
Пока ничего особенного, и выне получит никакой прокрутки ...
Затем добавьте еще Нижнее ограничение 0
к ContentView
и измените первое Нижнее ограничение набыть >= 0
и установить Приоритет нового нижнего ограничения на 250
:
Это (после еще нескольких шагов) позволит ContentView
развернуть / свернуть на основе его содержимого, а также управлять .contentSize
представления прокрутки.
Следующим шагом является указание Button
, чтобы определить высоту ContentView
-поэтому добавьте нижнее ограничение 30
к кнопке (которое будет равно Top: 30
, которое мы дали метке заголовка):
Конечно, это не совсем что мы хотим.Она растягивает высоту кнопки, потому что мы установили ограничение высоты на ContentView
.Итак ... удалить ограничение высоты из ContentView
:
В результате высота ContentView
уменьшится до 30 пунктов ниже нижней части кнопки.
Если вы добавите немного текста к метке Body
(при условии, что он установлен на Number of Lines; 0
), вы увидите Body
разметить метку и «нажать вниз» кнопку, которая в свою очередь «толкает» нижнюю часть ContentView
:
Если вы добавите достаточно текстана Body
, чтобы нажать кнопку под нижней частью вида прокрутки - либо в IB, либо с помощью кода - теперь он будет прокручиваться по вертикали.
Надеюсь, это понятно ... пожалуйста, спросите, если у вас есть какие-либо вопросы.