Я создаю форму ввода данных в своем приложении для iPhone, и здесь больше полей данных, чем умещается на экране. Я решил, что нужно поместить их в UIScrollView, чтобы пользователь мог прокручивать форму. Как лучше всего построить это в Интерфейсном Разработчике? Я знаю, что могу сделать это программно, но я бы хотел сделать это в Interface Builder, если смогу. Проблема в том, как я могу разместить UILabels, UITextFields и т. Д., Если они выходят за пределы основного экрана iPhone - в той части экрана, для которой UIScrollView становится полезным?
Как настроить UIScrollView в Interface Builder с элементами пользовательского интерфейса за пределами основного представления iPhone?
Ответы (7)
Дважды щелкните, чтобы открыть сам UIScrollView
в IB, и увеличьте размер до нужного или большего размера (вы всегда можете уменьшить его во время выполнения). Затем просто добавьте элементы.
РЕДАКТИРОВАТЬ: не работает - вместо этого см. здесь.
Лучшее решение, которое я нашел для этой проблемы (которое я считаю неудобным для Interface Builder), заключается в следующем:
- поместите «контейнер» UIView внутри UIScrollView, установите размер контейнера UIView на необходимый (например, 320 x 1200) с помощью инспектора и добавьте свой контент в это представление контейнера. (ваши кнопки, текстовые поля и т. д.).
- установите в коде contentSize для UIScrollView таким же, как размер вашего контейнера UIView. где-нибудь, например, в viewDidLoad (например, scrollView.contentSize = containerView.frame.size;)
- Чтобы изменить содержимое за пределами представления прокрутки в Интерфейсном Разработчике, вам нужно каждый раз перетаскивать представление контейнера за пределы представления прокрутки, вносить изменения, затем перетаскивать представление контейнера обратно в UIScrollView и строить.
На самом деле это просто:
Создайте новый класс контроллера представления, например. MyScrollViewController
Создайте новый xib с UIScrollView в качестве самого верхнего представления и установите для класса владельца файла значение MyScrollView Controller.
Установите атрибут представления владельца файла на просмотр прокрутки
Перетащите нижнюю часть прокрутки, чтобы создать желаемый размер.
Разместите различные другие элементы пользовательского интерфейса в качестве подвидов прокрутки.
Создайте и подключите IBOutlet в MyScrollViewController.h для просмотра прокрутки, например
@property (retain, nonatomic) IBOutlet UIScrollView *scrollView;
В методе viewDidLoad MyScrollViewController добавьте следующую строку кода:
self.scrollView.contentSize = self.scrollView.frame.size;
Э-э-э-это все, ребята!
Настройте «Вставки содержимого» для «Размер прокрутки» в «Инспекторе размеров»: Bottom = YourFrameHeight - ScreenHeight. Это позволит вам прокручивать диапазоны сверху вниз и снизу вниз вашего UIScrollView.
У меня тоже была такая же проблема. В итоге я поместил в него еще один UIView и установил высоту, которую хотел. Затем я помещаю в него все элементы пользовательского интерфейса. Это позволяет перетаскивать внутренний вид вверх и вниз.
То, что сработало для меня в xCode5 (без раскадровки, с использованием автолайпа), использует ответ из 7 шагов над концом со словами «Th-th-th-это все, ребята!» и добавляем два шага.
8) Перетащите новый UIView в конструктор интерфейса. Не в режиме прокрутки. Само по себе. Поместите в него все свои элементы управления / вид и сделайте его настолько большим, насколько хотите. Я подключил это представление как contentView.
@property (слабый, неатомарный) IBOutlet UIView * contentView;
9) Затем в - (void) viewDidLoad
[self.mainScrollView addSubview: self.contentView]; [self.mainScrollView setContentSize: CGSizeMake (self.contentView.frame.size.width, self.contentView.frame.size.height)];
Просто сказав, что это помогло мне.
Наконец-то есть разумное решение для всего этого - разместить контейнерное представление внутри UIScrollView. Поскольку Interface Builder отображает UIViewController внутри представления контейнера отдельно, вы, наконец, можете увидеть, как будет выглядеть ваш контент UIScrollView, не скрещивая пальцы и не вставая на голову.
Вам все еще нужно программно установить размер вашего контента, но по крайней мере теперь вы можете визуализировать, что происходит.