UIScrollView с автомакетом в раскадровках Just Works
Я видел, как несколько человек рекомендовали подход «Контейнерное представление», также известный как грубая сила, для решения проблемы, которую они не понимают. Это неоптимально, так как теперь вы потеряли большое преимущество прокрутки, заставив его думать, что содержимое представляет собой весь прокрутку, а не подвиды, непосредственно прикрепленные к прокрутке.
Вот как я это сделал в следующем примере
--UIScrollView
|-> UITextView
|-> UILabel
|-> UIOtherStuff
При размещении UIScrollView
в UIView
в раскадровке просто прикрепите края к 4 сторонам UIScrollView
к UIView
. Теперь добавьте свой контент в UIScrollView
, убедившись, что вы указали как минимум два ограничения для каждого измерения. Отличительной особенностью Autolayout является то, что он определяет, насколько большим должен быть размер содержимого прокрутки или UILabels, исходя из размера содержимого внутри него. Он же встроенныйContentSize. Поэтому, если вам выдается предупреждение «Неоднозначный размер содержимого для scrollView», вы знаете, что не наложили на содержимое достаточных ограничений. Например, вы можете указать расстояние между видами сверху, снизу, слева и справа, но ограниченному подвиду также нужна высота, поскольку бесконечная вертикальная плоскость, подобная этой UIScrollView
, может предполагать, что ваш вид был от нуля до бесконечной высоты.
Иными словами, руководство Apple по Autolayout на примере составляет простой план успеха из 3 пунктов:
- Создайте вид прокрутки.
- Поместите элемент пользовательского интерфейса внутрь него.
- Создайте ограничения, которые полностью определяют ширину и высоту содержимого прокрутки.
Этот верхний TextView с «Min melding til» также растет по мере того, как вы вводите в него больше строк, и весь ScrollView растет, чтобы содержать его. Хотя я переопределяю класс UITextView
, чтобы он возвращал измененное ограничение высоты, сам ScrollView работает правильно без кодирования.
И последнее, во многих сообщениях, связанных с Autolayout, используется волшебное заклинание «все исправить» translatesAutoresizingMaskIntoConstraints = NO
. Это необходимо только в том случае, если представление создается программно.
![Пример UIScrollView с автомакетом](https://i.stack.imgur.com/yS6EL.png)
person
Cameron Lowell Palmer
schedule
20.01.2014