Как сделать горизонтальный пейджинг без вертикального пейджинга в UIScrollView - PullRequest
4 голосов
/ 10 июня 2010

Сейчас я делаю цифровой комикс.Мое приложение имеет горизонтальный пейджинг без масштабирования.Но при масштабировании высота изображения превышает высоту экрана.Так что приложение имеет вертикальный пейджинг.

Но мне не нужен вертикальный пейджинг.я хочу сделать горизонтальный пейджинг без вертикального пейджинга во время увеличения.

Пожалуйста, научите меня.

Ответы [ 3 ]

13 голосов
/ 27 августа 2010

Это действительно просто.Как предположил ваш друг, вам понадобится как минимум два UIScrollView.Вам понадобится один UIScrollView для горизонтального (т. Е. Подкачки), и вам потребуется один UIScrollView для каждой страницы.Ключевыми точками являются (назовем их scrollHorizontal и scrollVertical):

  • scrollHorizontal.frame.height должно равняться scrollHorizontal.contentSize.height (в противном случае вы получите вертикальную подкачку)
  • scrollVertical: во-первых, у вас будет по одному для каждой страницы.Ширина кадра и contentSize.width должны совпадать и иметь смысл с шириной страницы (в вашем scrollHorizontal).Конечно, высота кадра должна быть не более scrollHorizontal.contentSize.height.

Пример кода:


UIScrollView scrollHorizontal = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

scrollHorizontal.pagingEnabled = YES;
scrollHorizontal.directionalLockEnabled = YES; // not needed but helpful

// Now let's create each page

UIScrollView *scrollPage1 = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

[scrollPage1 addSubview:theContentViewForPage1];

scrollPage1.contentSize = CGSizeMake(self.view.bounds.size.width, theContentViewForPage1.bounds.size.height);

// Add page to scrollHorizontal

[scrollHorizontal addSubview:scrollPage1];
[scrollPage1 release];

//...add more pages (REMEMBER to set the scroll view's frame.origin.x accordingly for each additional page)

// Set the scrollHoriztonal content size
scrollView.contentSize = CGSizeMake(self.view.bounds.size.width*NUMBER_OF_PAGES, self.view.bounds.size.height);

// Now add the scrollview to self.view; or even self.view = scrollHorizontal, etc.

0 голосов
/ 03 июля 2010

Вы можете динамически установить pagingEnabled на NO, когда пользователь увеличивает масштаб, а затем установить его обратно на YES, когда они уменьшают масштаб.

Проверьте документы для UIScrollViewDelegate, чтобы узнать, как обнаружить увеличение.

0 голосов
/ 10 июня 2010

Технически не существует такой вещи, как вертикальный пейджинг, только горизонтальный на текущий момент для стандартного API. Прокрутка вверх / вниз, а листание влево / вправо немного отличается.

Вы должны иметь возможность отключить вертикальную прокрутку в Интерфейсном Разработчике после выбора просмотра uiscroll и редактирования его свойств в окне инспектора.

...