2010-08-12 6 views
0

J'ai commencé à essayer de comprendre la façon dont Apple implémente l'application photoviewer pour l'iPhone après avoir regardé les deux vidéos de WWDC 2009 et 2010 sur scrollViews et pagination à travers les photos et je prends très lentement chaque étape pour bien comprendre les processus avant de mettre en œuvre tout dans mon application.pagingScrollView Slideshow

J'ai couru dans quelques problèmes au moment:

  1. Tout d'abord je l'ai mis en place pour avoir une vue de défilement de pagination à glisser vers la gauche et à droite entre les photos avec un peu d'espace entre comme sur les vidéos mais quand j'ajoute une image dans une image UIImageView th est trop grande pour l'écran, j'ai essayé d'ajouter UIViewContentModeScaleAspectFit; sans effet. Lorsque je parcours la boucle for pour regarder chaque élément du tableau contenant les images, les UIViews se chevauchent et montrent une photo l'une au-dessus de l'autre, je voudrais savoir comment les séparer dans la section suivante de la vue de défilement de pagination.


- (void)loadView{ 
    UIImage *img0 = [UIImage imageNamed:@"29.png"]; 
    UIImage *img1 = [UIImage imageNamed:@"33.png"];

NSMutableArray *imgArray = [[NSMutableArray alloc] initWithObjects:img0, img2, nil]; CGRect pagingScrollViewFrame = [[UIScreen mainScreen] bounds]; pagingScrollViewFrame.origin.x -= 10; pagingScrollViewFrame.size.width += 20; pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame]; pagingScrollView.pagingEnabled = YES; pagingScrollView.backgroundColor = [UIColor blackColor]; pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width * [imgArray count], pagingScrollViewFrame.size.height); self.view = pagingScrollView; for (int i=0; i < [imgArray count]; i++) { UIImageView *page = [[UIImageView alloc] initWithImage: [imgArray objectAtIndex:i]]; page.contentMode = UIViewContentModeScaleAspectFit; [pagingScrollView addSubview:page]; }}

Comme je l'ai mentionné, je suis assez nouveau à la programmation pour l'iPhone et je prends les choses lentement à comprendre pleinement, par la suite ce programme imiter l'application native avec pincement et tapotant pour zoomer.

Répondre

3

Si vous utilisez UIImageViews, assurez-vous que le champ ClipsToBounds de votre vue est défini sur yes. Essayez d'ajouter:

UIImageView *page = [[UIImageView alloc] 
          initWithImage:[imgArray objectAtIndex:i]]; 
[page setContentMode:UIViewContentModeScaleAspectFit]; 
[page setClipsToBounds:YES]; 
[pagingScrollView addSubview:page]; 

Ensuite, assurez-vous de régler le cadre de votre image sur le décalage correct dans la vue défilement. Origin.x du cadre doit être la largeur de l'image fois l'index de l'image. Donc, vous avez besoin de quelque chose comme ceci:

[page setFrame:CGRectMake(i*pagingScrollViewFrame.size.width, y, width, height)]; 

i est votre index de votre boucle.

Bien que dans l'exemple de code de la session WWDC auquel vous faites référence, cela se fait dans une méthode appelée -configurePage. Avez-vous téléchargé l'exemple de code?

+0

Ouais j'ai l'exemple de code et j'ai essayé de comprendre ce qui se passait mais j'ai décidé d'écrire moi-même à partir des diagrammes qu'ils ont montrés à la WWDC 2010 avec les couches individuelles du PhotoScroller, donc Paging layer, Zooming couchez ensuite la vue UIImage en tant que sous-vue, puis redescendez un niveau et faites en sorte que la pagination fonctionne en premier, puis construisez-la à partir de cela. De votre réponse, je ne peux pas définir les clipsToBounds en disant que la page n'est pas une structure ou une union. – SamRowley

1

-[UIImageView initWithImage:] définit la taille de l'image. Vous devrez utiliser page.frame = [[UIScreen mainScreen] bounds] ou similaire pour redimensionner les images à la bonne taille.

+0

Merci d'avoir essayé cela mais pas en conjonction avec l'AspectFit et cela fonctionne: D. Juste besoin de comprendre comment définir les images dans le scrollView principal. – SamRowley

Questions connexes