Запустите UIScrollView

Возможный дубликат:
UIScrollView. Любые мысли о реализации «бесконечной» прокрутки / масштабирования?

У меня есть UIScrollView и в нем разные образы (около 30). Я хотел бы сделать это, когда пользователь достигнет последнего изображения, чтобы показать первый после него и так далее. И я хочу реализовать ту же функцию с первым изображением (чтобы перейти к последнему). Я бы хотел, чтобы петли изображения плавно, что пользователь даже не заметит, что он делает еще один цикл.

Каков наилучший способ достичь этого?

Благодарю.

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

Просмотрите этот код:

#import "MainViewController.h" #import "MainView.h" #define WIDTH_OF_SCROLL_PAGE 320 #define HEIGHT_OF_SCROLL_PAGE 352 #define WIDTH_OF_IMAGE 320 #define HEIGHT_OF_IMAGE 352 #define LEFT_EDGE_OFSET 0 @implementation MainViewController @synthesize scrollView, slideImages; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { // Custom initialization } return self; } - (void)viewDidLoad { scrollView = [[UIScrollView alloc] init]; CGRect scrollFrame; scrollFrame.origin.x = 0; scrollFrame.origin.y = 0; scrollFrame.size.width = WIDTH_OF_SCROLL_PAGE; scrollFrame.size.height = HEIGHT_OF_SCROLL_PAGE; scrollView = [[UIScrollView alloc] initWithFrame:scrollFrame]; scrollView.bounces = YES; scrollView.pagingEnabled = YES; scrollView.delegate = self; scrollView.userInteractionEnabled = YES; slideImages = [[NSMutableArray alloc] init]; [slideImages addObject:@"welcome-small.jpg"]; [slideImages addObject:@"football-small.jpg"]; [slideImages addObject:@"dancing-small.jpg"]; [slideImages addObject:@"celebration-small.jpg"]; //add the last image first UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:([slideImages count]-1)]]]; imageView.frame = CGRectMake(LEFT_EDGE_OFSET, 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE); [scrollView addSubview:imageView]; [imageView release]; for (int i = 0;i<[slideImages count];i++) { //loop this bit UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]]; imageView.frame = CGRectMake((WIDTH_OF_IMAGE * i) + LEFT_EDGE_OFSET + 320, 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE); [scrollView addSubview:imageView]; [imageView release]; // } //add the first image at the end imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:0]]]; imageView.frame = CGRectMake((WIDTH_OF_IMAGE * ([slideImages count] + 1)) + LEFT_EDGE_OFSET, 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE); [scrollView addSubview:imageView]; [imageView release]; [scrollView setContentSize:CGSizeMake(WIDTH_OF_SCROLL_PAGE * ([slideImages count] + 2), HEIGHT_OF_IMAGE)]; [scrollView setContentOffset:CGPointMake(0, 0)]; [self.view addSubview:scrollView]; [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO]; [super viewDidLoad]; } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { int currentPage = floor((self.scrollView.contentOffset.x - self.scrollView.frame.size.width / ([slideImages count]+2)) / self.scrollView.frame.size.width) + 1; if (currentPage==0) { //go last but 1 page [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE * [slideImages count],0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO]; } else if (currentPage==([slideImages count]+1)) { [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO]; } } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } - (void)viewDidUnload { // Release any retained subviews of the main view. // eg self.myOutlet = nil; } - (void)dealloc { [scrollView release]; [slideImages release]; [super dealloc]; } @end 

Затем я использую scrollViewDidEndDecelerating, чтобы проверить, где находится прокрутка пользователя, а затем перескакивает их на второе изображение или последнее, но 1 изображение, чтобы они могли беспрерывно прокручиваться ... Извините, если я не объяснил это хорошо - короткое время! Но этот код отлично работает для меня на устройстве.

У вас также может быть бесконечная прокрутка без пейджинга. Вот большое объяснение на WWDC

  • In-app Purchase «готов к отправке», но я не позволю представить его
  • Как правильно настроить NSPredicate для отношения «многие» при использовании Core Data?
  • Могу ли я избежать встроенного полноэкранного видеоплеера с HTML5 на iPhone или Android?
  • Реализация «Автоматическая легкая миграция» для основных данных (iPhone)
  • Предотвратите скрытие панели навигации UISearchDisplayController
  • iPhone App> Добавить распознавание голоса?
  • Двухскоростное воспроизведение для iTunes?
  • Что такое пользовательский агент iPhone 4?
  • Использование iPhone - dequeueReusableCellWithIdentifier
  • Понимание часового пояса Etc / GMT
  • IOS 6: ориентация устройства на пейзаж
  • Давайте будем гением компьютера.