Как я могу изменить существующий UIViewController, чтобы позволить прокрутку? - PullRequest
9 голосов
/ 07 июля 2010

Я уже создал подкласс UIViewController с кучей элементов управления в нем и просто понял, что если я поверну iPhone, половина элементов управления станет невидимой.Итак, я хотел бы как-нибудь сделать прокрутку UIViewController's UIView, чтобы при вращении устройства (или симулятора) пользователь мог прокручивать вид, чтобы увидеть все элементы управления.сделать все это в Interface Builder .Я попытался изменить класс представления с UIView на UIScrollView в редакторе Class Identity, но ничего не прокручивается.Базовый класс моего контроллера представления является простым UIViewController <UIScrollViewDelegate>.

Есть ли простой способ сделать прокручиваемый основной вид в моем контроллере вида без необходимости воссоздания всего этого в IB?

Ответы [ 7 ]

6 голосов
/ 23 августа 2014

Для людей, которые используют раскадровку, это довольно легко сделать

  • в документе Outline выберите самый верхний View UIViewController
  • , затем в Identity Inspectter, под Custom Class, для класса введите UIScrollView

Вот и все.

2 голосов
/ 29 февраля 2012

Вы можете сделать это следующим образом:

  1. Откройте файл пера и создайте объект UIScrollView под вашим объектом UIView.
  2. Переместите все свои элементы управления на UIScrollView
  3. Откройте файл заголовка (.h) и добавьте новое свойство для вида прокрутки:

@ свойство (неатомное, сохранение) IBOutlet UIScrollView * scrollView;

  1. Откройте файл реализации (.m) и вставьте следующее:

@synthesize scrollView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

   // Enable scrolling for portrait
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, 600);  

}
  1. Вернитесь к файлу nib и подключите scrollView на владельце файла к вашему объекту UIScrollView.

Реальный трюк здесь - установка scrollView.contentSize. Как только это установлено, прокрутка должна произойти.

Если вы хотите включить прокрутку, когда устройство находится в портретной ориентации, вы можете использовать это:

   // Enable scrolling for landscape orientation
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, scrollView.frame.size.height); 

Это должно дать вам некоторое представление.

Блошиный

2 голосов
/ 07 июля 2010

Добавьте UIScrollView и сделайте все свои элементы управления, виджеты и метки подпредставлениями представления прокрутки, перетаскивая их из того места, где они находятся «внутри» или «внутри» представления прокрутки.Это делает их подпредставлениями прокрутки, что вам и нужно.

1 голос
/ 30 ноября 2011

Режим прокрутки вызывается только в том случае, если contentSize из UIScrollView больше его границ.

1 голос
/ 24 августа 2011

Я смог сделать это, добавив представление прокрутки к представлению в IB, сделав контроллер представления UIScrollViewDelegate, подключив представление прокрутки к объекту UIScrollView в IB, подключив делегата к владельцу файла и добавив эту строкув viewDidLoad:

    - (void) viewDidLoad {
        scrollView.contentSize = CGSizeMake(1280, 960);
    }
0 голосов
/ 21 августа 2012

Добавьте полосу прокрутки в файл Xib и затем перетащите и отпустите элементы управления на полосу прокрутки.Внутри load view использовать

scrollView.contentSize = CGSizeMake(CONTENT_WIDTH, CONTENT_HEIGHT);
0 голосов
/ 07 июля 2010

Было бы полезно понять, что отображает ваш интерфейс, но я бы предложил одно из следующего:

  1. Не разрешать вращение, возвращая NO из shouldAutorotateToInterfaceOrientation
  2. Используйте Interface Builder для настройки пружин и распорок , чтобы все элементы интерфейса помещались в альбомной ориентации
  3. Добавьте новый UIScrollView в Интерфейсном Разработчике и перетащите в него свой UIView, затем переназначьте свойство представления Владельца вашего файла на представление прокрутки.
...