Добавить ScrollView в существующий вид

Я разрабатываю небольшое приложение в Swift 2.0. У меня есть представление со следующей иерархией:

введите описание изображения здесь

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

Как я могу встроить все содержимое моего View в новый ScrollView? Могу ли я сделать это программно с помощью кода?

Ответ 1

ОБНОВЛЕНИЕ: существует более простой способ сделать это, чего я не знал, когда отправил этот ответ

1) Перейдите в viewcontroller на раскадровке и нажмите что-нибудь в нем и нажмите Command + A. Это выберет все элементы в представлении.

2) Перейдите к Editor -> Embed In -> Scroll View. Это будет включать все метки, представления и т.д. В scrollView.

3) Выберите scrollview, который вы только что вложили. Нажмите Control и перетащите его в соответствующий файл класса viewcontroller и создайте выход scrollview.

4) Добавьте это в свой viewDidLoad()

scrollView.contentSize = CGSizeMake(self.view.frame.width, self.view.frame.height+100)

Убедитесь, что высота для contentSize больше, чем размер вашего представления.

ДОБАВИТЬ ПРОСМОТР ПРОСМОТРА

1) Перетащите scrollview из библиотеки объектов на ваш viewcontroller в раскадровке и создайте выход в свою программу как "scrollView".

2) Нажмите на viewcontroller и перейдите к инспектору размера и отметьте ширину и высоту.

3) Нажмите на scrollview и установите width и height так же, как viewcontroller. и установите значения X и Y равными 0

4) Нажмите на scrollview и немного потяните его в сторону

5) Нажмите Command+A, чтобы выбрать все элементы, включая scrollview. Нажмите Command и нажмите scrollview, чтобы отменить выбор scrollview

6) Теперь вы будете иметь все элементы, кроме scrollview. Теперь нажмите и перетащите их в scrollView.

Перемещение в scrollView

7) Теперь нажмите на scrollview и установите значения X и Y в значение 0 из Инспектора размеров.

8) Добавьте это в свой viewDidLoad()

scrollView.contentSize = CGSizeMake(self.view.frame.width, self.view.frame.height+100)

Убедитесь, что высота для contentSize больше, чем размер вашего представления.

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

Ответ 2

Это можно сделать даже более симпатичным, чем ответ ebby94.

1) Перейдите в viewcontroller на раскадровке и нажмите что-нибудь в нем и нажмите Command + A. Это выберет все элементы в представлении.

2) Перейти к редактору → Вставить In → Scroll View. Это будет включать все метки, представления и т.д. В scrollView.

3) Задайте ограничения вида прокрутки к краям вида.

И ты в порядке! Нет необходимости в розетке.

Ответ 3

Я была такая же проблема. Мне нужно было добавить scrollview к существующему представлению. Но у моего основного представления контейнера есть много представлений внутри него. И они были связаны друг с другом. Так что я боялся. Наконец-то я это сделал. процесс приведен ниже.

  1. Дублируйте ваш вид (корневой вид). Для этого сначала выберите корневой вид, затем нажмите Ctrl + D

  2. Теперь удалите все дочерние представления внутри корневого представления.

  3. Теперь добавьте представление прокрутки к корневому представлению и установите ограничение на 0,0,0,0.

  4. Теперь добавьте дублирующийся (который вы продублировали) вид в представление прокрутки и установите ограничения на 0,0,0; 0 также установите желаемую высоту.

  5. Установите ширину дублированного вида равной ширине с корневым видом.

  6. Теперь выберите viewController, зайдите в инспектор размера, выберите свободный размер формы. Затем установите высоту, которую вы ввели с двойным видом.

  7. Вы почти сделали. Теперь вам нужно связать дочернее представление с выходом или действием, которое вы дали в классе viewController.

Это все.

Ответ 4

Выбор всех элементов и вложение прокрутки (editor- > embed in > scrollView) отлично работает.

Добавление ограничения намного проще, выбирая предупреждение ограничения (Add Missing Constraints).

Ответ 5

Это просто. Команды A и X для определенного контроллера представления в StoryBoard. После этого возьмите вид прокрутки. При просмотре с прокруткой просто возьмите один вид с высотой и шириной вида контроллера вида, равными ширине вида прокрутки. Снова выполните команду V и измените ограничения. Ваша проблема будет решена.