Добавление подсмотров в UIScrollView в ландшафтном режиме

У меня есть контроллер вида, который запускается в ландшафтном режиме с помощью UIScrollView. Я пытаюсь создать subviews и добавить их в UIScrollView, но размер кадра в представлениях был в портретном размере.

Вот мой код:

- (void)viewDidLoad { [super viewDidLoad]; [self.scrollView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight)]; NSArray *colors = [NSArray arrayWithObjects:[UIColor redColor], [UIColor greenColor], [UIColor blueColor], nil]; for (int i = 0; i < colors.count; i++) { CGRect frame = self.scrollView.frame; frame.origin.x = frame.size.width * i; frame.origin.y = 0; UIView *subview = [[UIView alloc] initWithFrame:frame]; subview.backgroundColor = [colors objectAtIndex:i]; [self.scrollView addSubview:subview]; } self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * colors.count, self.scrollView.frame.size.height); self.scrollView.pagingEnabled = YES; self.scrollView.showsHorizontalScrollIndicator = NO; self.scrollView.showsVerticalScrollIndicator = NO; self.scrollView.scrollsToTop = NO; } 

Выход:

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

 - (void)viewDidLoad { [super viewDidLoad]; [self.scrollView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight)]; NSArray *colors = [NSArray arrayWithObjects:[UIColor redColor], [UIColor greenColor], [UIColor blueColor], nil]; for (int i = 0; i < colors.count; i++) { CGRect frame = self.scrollView.bounds; frame.origin.x = frame.size.width * i; frame.origin.y = 0; UIView *subview = [[UIView alloc] initWithFrame:frame]; subview.backgroundColor = [colors objectAtIndex:i]; [self.scrollView addSubview:subview]; } [self.scrollView setAutoresizesSubviews:NO]; self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * colors.count,self.scrollView.frame.size.height); self.scrollView.pagingEnabled = YES; self.scrollView.showsHorizontalScrollIndicator = NO; self.scrollView.showsVerticalScrollIndicator = NO; self.scrollView.scrollsToTop = NO; } - (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { currentPageOffset = [self.scrollView contentOffset].x / [self.scrollView bounds].size.width; if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) { for(int i=0;i<=2;i++) { UIView *currentView = [[self.scrollView subviews] objectAtIndex:i]; [currentView setFrame:CGRectMake((i)*currentView.frame.size.height, 0, [self.scrollView bounds].size.height,[self.scrollView bounds].size.width)]; } [self.scrollView setContentSize:CGSizeMake(self.scrollView.bounds.size.height *3, self.scrollView.bounds.size.width)]; } else { for(int i=0;i<=2;i++) { UIView *currentView = [[self.scrollView subviews] objectAtIndex:i]; [currentView setFrame:CGRectMake((i)*currentView.frame.size.height, 0,[self.scrollView bounds].size.height,[self.scrollView bounds].size.width)]; } [self.scrollView setContentSize:CGSizeMake(self.scrollView.bounds.size.height * 3, self.scrollView.bounds.size.width)]; } } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration { [self.scrollView setContentOffset:CGPointMake([self.scrollView bounds].size.width * currentPageOffset, 0.0f) animated:NO]; } 

Вы можете попробовать этот код. Используемые значения настраиваются на основе вашего требования. Если вы попытаетесь установить рамку самостоятельно с помощью поворотов, убедитесь, что вы не используете маску авторезистирования, иначе все может пойти не так. Надеюсь, что ответит на ваш вопрос.

  • Увеличение сопротивления резистивности UIScrollView
  • UICollectionView прокручивается вправо (влево)
  • Swift: как установить UIScrollView contentSize height до высоты содержимого?
  • iOS / Swift - Скрыть / Показать UITabBarController при прокрутке вниз / вверх
  • ScrollView добавляет пространство в верхней части subview xcode 6 Swift
  • iOS Как обновить ScrollView при изменении модели?
  • Как заставить UIScrollView отправлять сообщения scrollViewDidScroll во время анимации
  • Сделать прокруткой UIView
  • Преобразование UIScrollViewPoint в UIImage + ZOOM + ROTATE
  • Я не полностью понимаю scrollRectToVisible, когда я использую contentInset
  • Получите перевод UIScrollView в виду, когда прокрутка происходит?
  • Interesting Posts

    API Facebook Live Video, можно ли программным образом поделиться потоком видео друга?

    iPhone iOS, как объединить основные данные NSManagedObjectContext?

    Недопустимая структура пакета. Приложение может содержать только один исполняемый файл.

    Как я могу использовать существующий закрытый ключ для нового сертификата разработки iOS?

    Какая утечка делает автоматический подсчет ссылок в Objective-C не предотвращать или сводить к минимуму?

    NSTextAttachment не отображается на CATextLayer

    Элемент iOS UI Automation не находит подэлементов

    Как изменить тип объекта типа plist на NSArray в Xcode 4

    Создание сети NAT64

    Грандиозная диспетчерская отправка EXC_BAD_ACCESS Исключение

    NSURLSession / NSURLConnection Ошибка загрузки HTTP (kCFStreamErrorDomainSSL, -9813) в iOS 9 с Xcode 7.1

    Как программно запускать журналы сбоев iOS?

    Применение части текстуры (лист спрайта / текстуры) для точечного спрайта в iOS OpenGL ES 2.0

    dequeueReusableCellWithIdentifier продолжает возвращать ноль

    Предикат даты не работает

    Давайте будем гением компьютера.