2011-07-29 2 views
4

J'essaie d'ajouter divers UIImages sous UIImageView et leur permettre de faire défiler avec UIScrollView. Je ne suis pas sûr comment ajouter diverses images sous UIImageView et les laisser défiler. Ci-dessous est mon code qui ajoute une image sur UIImageView et le faire défiler.Ajouter 10 UIImages différents dans UIScrollView

- (void)viewDidLoad { 

    [super viewDidLoad]; 
    UIImage *image = [UIImage imageNamed:@"ae.jpg"]; 
    imageView = [[UIImageView alloc]initWithImage:image]; 
    imageView.frame = [[UIScreen mainScreen] bounds]; 
    imageView.contentMode = (UIViewContentModeScaleAspectFit); 
    imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 
    imageView.backgroundColor = [UIColor clearColor]; 



    UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
    scrollView.contentMode = (UIViewContentModeScaleAspectFit); 

    scrollView.contentSize = CGSizeMake(image.size.width,960); 
    scrollView.pagingEnabled = NO; 
    scrollView.showsVerticalScrollIndicator = NO; 
    scrollView.showsHorizontalScrollIndicator = NO; 
    scrollView.alwaysBounceVertical = NO; 
    scrollView.alwaysBounceHorizontal = NO; 
    scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 
    scrollView.maximumZoomScale = 2.5; 
    scrollView.minimumZoomScale = 1; 
    scrollView.clipsToBounds = YES; 
    [scrollView addSubview:imageView]; 
    [image release]; 
    [imageView release]; 
    [self.view addSubview:scrollView]; 
} 
+0

Vous souhaitez probablement utiliser plusieurs UIImageViews dans le même UIScrollView. Mais on ne sait pas exactement ce que vous voulez qu'il fasse. – jtbandes

+0

Je veux ajouter des images différentes les unes sous les autres comme je veux ajouter une autre image ci-dessous "ae.png" et lui permettre de faire défiler. Disons actuellement qu'il n'a qu'une seule image, mais si je veux ajouter un tableau d'images dans UIIImageView, est-ce possible? – lifemoveson

+0

Utilisez simplement plusieurs UIImageViews. – jtbandes

Répondre

8

L'idée est fondamentalement simple. Supposons que vous voulez placer 3 images dans UIScrollView. Chacune des images est de 300x300. Dans ce cas, vous aurez vue défilement avec cadre:

scrollView.contentSize = CGSizeMake(image.size.width,900); 

Pour chaque image, vous devez avoir est UIImageView avec cadre approprié:

imgView1 = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 0, 300, 300)]; 
imgView2 = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 300, 300, 300)]; 
imgView3 = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 600, 300, 300)]; 
imgView1.image = [UIImage imageNamed:@"ProperName.png"]; 
... 

(faites attention à la yOrigin (valeur 2ème CGRectMake)) et que vous avez fait:

[scrollView addSubview:imgView1]; 
[scrollView addSubview:imgView2]; 
[scrollView addSubview:imgView3]; 
[imgView1 release]; 
[imgView2 release]; 
[imgView3 release]; 

Bien sûr, il est un code bref, vous l'optimiser;)

+0

quel type d'optimisation suggérez-vous? En effet, avec 20 uiviews, chacun contenant 1 UIImageview (avec ombre et bordure) et 2 UILabels (sans effet de texte), mon UIScrollView ne défile pas facilement. – David

+0

Eh bien, je ne suis pas entré en collision avec ce genre de problème, mais j'essaierais d'implémenter un algorithme de réutilisation de page (UITableView utilise cette approche pour la réutilisation de la cellule). De cette façon, vous aurez toujours un nombre limité de pages (et leurs ressources en conséquence). Évidemment, vous devrez remplir le contenu de manière dynamique lors du défilement. Vous pouvez lire ma réponse ici (http://stackoverflow.com/questions/8374907/uiscrollview-selection-like-uipickerview voir la partie n.2 de la réponse). Là, vous aurez une des idées possibles sur la façon d'épargner de la mémoire. Bonne chance. – makaron