UIScrollView с несколькими видимыми страницами или меньшими размерами страниц - PullRequest
6 голосов
/ 31 июля 2010

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

Я могу получить нужный эффект визуально, изменив размер UIScrollview до требуемого размера одной страницы, отключив отсечение подпредставления и поместив его в контейнер, который передает все его касанияUIScrollview.Проблема в том, что с видимыми Y-страницами вы можете прокручивать последнюю страницу полностью влево, оставляя Y-1 пустыми страницами после последней страницы.Кто-нибудь знает способ обойти это или другой подход к проблеме?

Ответы [ 2 ]

7 голосов
/ 31 января 2011

Я думаю, вам нужно что-то вроде предварительного просмотра в мобильном браузере Safari.Вот сайт с примером кода. Пример кода предварительного просмотра

6 голосов
/ 13 июня 2011

Для правого конца попробуйте уменьшить ширину свойства contentSize представления прокрутки настолько, чтобы представление прокрутки прекратило подкачку до того, как оно перейдет на последнюю страницу.Для левого края уменьшите свойство frame.origin.x каждой страницы на ту же величину.Первые несколько страниц будут иметь отрицательную позицию x в представлении прокрутки.

По существу, заставляя представление прокрутки думать, что его содержание - только страницы со второй по последнюю.1007 *

// scrollView has been initialized and added to the view hierarchy according to the link in @richard's answer:
// http://blog.proculo.de/archives/180-Paging-enabled-UIScrollView-With-Previews.html

CGFloat pageNum=10;
CGFloat pageWidth=scrollView.frame.size.width;
CGFloat pageHeight=scrollView.frame.size.height;
CGFloat visibleWidth=320;


// Set scrollView contentSize and create pages:

CGFloat leftShift=floor(((visibleWidth-pageWidth)/2)/pageWidth)*pageWidth;
CGFloat contentSizeReduction=2*leftShift;

scrollView.contentSize = CGSizeMake(pageNum*pageWidth-contentSizeReduction,pageHeight);

for(int i=0; i<pageNum; i++) {
  CGRect pageFrame = CGRectMake(i*pageWidth-leftShift, 0, pageWidth, pageHeight);
  UIView *pageView = [[[UIView alloc] initWithFrame:pageFrame] autorelease];

  // Initialize the page view for the current index here

  [scrollView addSubview:pageView];
}

Простите за любые опечатки в коде.Я еще не пробовал это сам.

Дайте мне знать, если это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...