2009-09-01 7 views
1

Je souhaite créer une grille 4 x 6 de UIImageViews contenant chacune une image légèrement différente. J'aimerais aussi pouvoir sélectionner aléatoirement une des instances et changer son image.Configuration de plusieurs instances UIImageView

Ma question est quelle est la meilleure façon de configurer UIImageViews dans une formation de grille, effectuer quelques actions entre chaque installation, et choisir au hasard 1 des 24 instances une fois l'installation terminée. Idéalement, je n'aurais pas à mettre en place chacun par un.

Merci d'avance.

Répondre

2

Vous pouvez effectuer différentes approches selon que vous souhaitez ou non utiliser Interface Builder pour mettre en forme votre grille.

Une option consiste à mettre en forme vos 24 UIImageViews en tant que sous-vues d'une vue parente commune dans IB. Dans l'onglet View Attributes, vous pouvez définir un "Tag" de 1 à 24 pour différencier vos UIImageViews. Ensuite, dans votre code, vous pouvez utiliser [parentView viewWithTag: tagNumber] pour accéder à chaque UIImageView.

Si vous préférez effectuer des opérations plus programmatiques, vous pouvez créer chacune de vos UIImageViews en boucle dans la méthode loadView de votre sous-classe UIViewController. Vous pouvez gérer un tableau (ou un tableau de tableaux correspondant aux lignes et aux colonnes) en tant que propriété de votre contrôleur et stocker une référence à chacune de ces vues d'image lorsque vous les créez. Pour chaque UIImageView que vous créez, définissez sa propriété imageView.frame pour définir sa position, puis appelez [view addSubview: imageView] pour l'ajouter à la vue parente.

1

Je le ferais par programme pour votre bien.

NSArray *myViews = //I assume you can create an array of views 

for (int i=0; i<rows; ++i) { 
    for (int j=0; j<columns; ++j) { 
     UIImageView *thisImageView = [myViews objectAtIndex:(i*columns+j)]; 
     CGSize size = thisImageView.image.size; 
     [thisImageView setFrame:CGRectMake(j*size.width, i*size.height, size.width, size.height)]; 
     [self.view addSubview:thisImageView]; 
    } 
} 

//Later to pick one randomly 
UIImageView *myRandomView = [myViews objectAtIndex:(arc4random()%[myViews count])]; 
[myRandomView setImage:myNewImage];