Comment combiner UIScrollview avec UIPagecontrol pour afficher des vues différentes?

J'ai cherché et cherché un tutoriel pour cela mais aucun d'eux n'est ce que je cherche. J'ai essayé l'échantillon d'Apple mais ce sont juste des colors et je ne sais pas comment faire des vues. Tout ce que je search est un écran qui va paginer tout en montrant le contrôle de la page. Chaque fois que je feuillette les pages de la vue, je veux montrer une vue complètement différente avec des buttons, un peu comme l'écran d'accueil de l'iPhone. J'ai trouvé l'exemple de code ci-dessous qui fonctionne très bien avec seulement des images, mais je voudrais modifier pour travailler avec des vues séparées. S'il vous plaît aidez! Je vous remercie.

- (void)setupPage { scrollView.delegate = self; [self.scrollView setBackgroundColor:[UIColor clearColor]]; [scrollView setCanCancelContentTouches:NO]; scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; scrollView.clipsToBounds = YES; scrollView.scrollEnabled = YES; scrollView.pagingEnabled = YES; NSUInteger nimages = 0; CGFloat cx = 0; for (; ; nimages++) { NSSsortingng *imageName = [NSSsortingng ssortingngWithFormat:@"image%d.jpg", (nimages + 1)]; UIImage *image = [UIImage imageNamed:imageName]; if (image == nil) { break; } UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; CGRect rect = imageView.frame; rect.size.height = image.size.height; rect.size.width = image.size.width; rect.origin.x = ((scrollView.frame.size.width - image.size.width) / 2) + cx; rect.origin.y = ((scrollView.frame.size.height - image.size.height) / 2); imageView.frame = rect; [scrollView addSubview:imageView]; [imageView release]; cx += scrollView.frame.size.width; } self.pageControl.numberOfPages = nimages; [scrollView setContentSize:CGSizeMake(cx, [scrollView bounds].size.height)]; } 

J'expérimentais avec ça juste l'autre jour. Je m'habitue toujours à utiliser un UIScrollView mais voici comment vous pouvez append des vues à votre UIScrollView :

 UIView *blueView = [[UIView alloc] init]; blueView.frame = CGRectMake(100, 0, 500, 1024); blueView.backgroundColor = [UIColor colorWithRed:164.0/256 green:176.0/256 blue:224.0/256 alpha:1]; [scrollView addSubview:blueView]; [blueView release]; UIView *orangeView = [[UIView alloc] init]; orangeView.frame = CGRectMake(700, 0, 500, 1024); orangeView.backgroundColor = [UIColor colorWithRed:252.0/256 green:196.0/256 blue:131.1/256 alpha:1]; [scrollView addSubview:orangeView]; [orangeView release]; 

Notez que je frame.origin valeur x dans frame.origin de chaque vue afin qu'elles soient adjacentes les unes aux autres. Vous devez également définir la taille du contenu de UIScrollView avec quelque chose comme [scrollView setContentSize:CGSizeMake(1200, 1024)]; pour qu'il sache à quel point ses sous-vues sont grandes.

Ensuite, si vous avez besoin de contrôler un UIPageControl , vous devez numberOfPages à 2 (pour l'exemple scrollview ci-dessus) et modifier sa propriété currentPage . Vous pouvez le faire en implémentant scrollViewDidEndDecelerating: qui est une méthode dans UIScrollViewDelegate . Vous pouvez vérifier à quelle "page" se trouve le scrollview en vérifiant sa valeur contentOffset.x .

J'espère que cela t'aides!

Voici le code Apple PageControl avec des images. Pour l'utiliser, faites simplement glisser vos images sur le projet. Les images par défaut sont image1.jpg, image2.jpg, etc. Si vous avez besoin de png, changez simplement l'extension en .png.

Ensuite, remplacez le code MyViewController.m par ce code, et vous avez pagecontrol avec des images.

À la vôtre, Jordan

http://pastebin.com/raw.php?i=c3hS29sC

// Ajout de UIView à l'exemple PageControl

  - (id)initWithPageNumber:(int)page { UIScreen *screen = [UIScreen mainScreen]; CGRect frame = [screen applicationFrame]; frame.origin.y=0; if (self = [super initWithNibName:@"MyView" bundle:nil]) { UIView *view = [[UIView alloc] initWithFrame:frame]; [self.view addSubview:view]; // Add whatever you want to the view here. [view release]; pageNumber = page; } return self; } 

Voici une autre réponse …

 NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"Views" owner:self options:nil]; infoView = [nibViews objectAtIndex:0]; [self.view addSubview:infoView]; 

Ensuite, vous avez votre sharepoint vue.

À votre santé