Проблема размера кадра UIScrollView в ландшафтном режиме - PullRequest
2 голосов
/ 16 марта 2010

Я пытаюсь заставить UIScrollView автоматически изменять размер и корректно отображаться в ландшафтном режиме. Портретный режим работает отлично. Вот мой код:

- (void)viewDidLoad {
[super viewDidLoad];

//=== load all the custom view 
NSMutableArray *controllers = [[NSMutableArray alloc] init];

int page = 0;
[controllers addObject:[self loadScrollView:[[Page1ViewController alloc] initWithNibName:@"Page1ViewController" bundle:nil] withPage:page++]];
[controllers addObject:[self loadScrollView:[[Page2ViewController alloc] initWithNibName:@"Page2ViewController" bundle:nil] withPage:page++]];
[controllers addObject:[self loadScrollView:[[Page3ViewController alloc] initWithNibName:@"Page3ViewController" bundle:nil] withPage:page++]];

self.viewControllers = controllers;
[controllers release];
//=== automaticaly define number of pages
_numberOfPages = [self.viewControllers count];

// a page is the width of the scroll view
scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
scrollView.pagingEnabled = YES;
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * _numberOfPages, scrollView.frame.size.height);
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.scrollsToTop = NO;
scrollView.delegate = self;

// First, set the number of pages
pageControl.numberOfPages = _numberOfPages;
pageControl.currentPage = 0;

}

Затем я вошел в каждый файл пера контроллера представления и установил цвет фона на другой, чтобы проверить, работает ли он. К сожалению, в ландшафтном режиме ширина и высота остаются такими же, как в портретном режиме.

Я не уверен, как решить эту проблему. Надеюсь, кто-нибудь может мне помочь. Спасибо заранее.

1 Ответ

3 голосов
/ 22 июня 2010

У меня та же проблема, но только если я открываю представление в альбомной ориентации, когда оно было разработано в .xib в режиме Портрет.

Если я открою в портретной ориентации, а затем поверните устройство, оно правильно размеры.

Я обнаружил, что если я загружаю свой массив контроллеров вида в viewWillAppear, а не в viewDidLoad, он всегда будет иметь правильный размер.

...