2015-03-31 1 views
0

Donc le code ci-dessous montre l'animation de toutes ces couleurs dans l'ordre où je l'ai placé. Cependant, comment pourrais-je faire en sorte que les couleurs apparaissent dans aucun ordre particulier, mais apparaissent dans l'ordre aléatoire?Comment afficher de manière aléatoire de nombreuses images sur un seul UIImage

bird.animationImages=[NSArray arrayWithObjects: 
          [UIImage imageNamed:@"red.png"], 
          [UIImage imageNamed:@"brown.png"], 
          [UIImage imageNamed:@"green.png"], 
          [UIImage imageNamed:@"gold.png"], 
          [UIImage imageNamed:@"black.png"], nil]; 

    [bird setAnimationRepeatCount:0]; 
    bird.animationDuration=1; 
    [bird startAnimating]; 
+1

Voir cette [Réponse SO] (http://stackoverflow.com/a/10258341/451475) pour randomiser le tableau de couleurs. – zaph

Répondre

0

Si vous avez créé toutes ces images et de les ajouter au projet, vous pouvez simplement écrire une méthode d'aide pour vous obtenir une image aléatoire. Il pourrait ressembler à ceci:

- (UIImage*)getRandomColorImage 
{ 
    NSInteger kNumberOfColors = 5; // or however many color images you have 
    NSInteger randomNumber = arc4random() % kNumberOfColors; 
    if(randomNumber == 0) 
    { 
     return [UIImage imageNamed:@"red"]; 
    } 
    else if (randomNumber == 1) 
    { 
     return [UIImage imageNamed:@"brown"]; 
    } 
    else if (randomNumber == 2) 
    { 
     return [UIImage imageNamed:@"green"]; 
    } 
    else if (randomNumber == 3) 
    { 
     return [UIImage imageNamed:@"gold"]; 
    } 
    else 
    { 
     return [UIImage imageNamed:@"black"]; 
    } 
} 

Si vous voulez rendre les choses encore plus flexibles, vous pouvez vous débarrasser des images ajoutées au projet et il suffit de créer une image colorée à la volée à l'aide du Core Bibliothèque graphique et ce repo github cool: https://gist.github.com/kylefox/1689973. La magie il y a dans ces 4 lignes (qui génèrent une couleur au hasard):

CGFloat hue = (arc4random() % 256/256.0); // 0.0 to 1.0 
CGFloat saturation = (arc4random() % 128/256.0) + 0.5; // 0.5 to 1.0, away from white 
CGFloat brightness = (arc4random() % 128/256.0) + 0.5; // 0.5 to 1.0, away from black 
UIColor *color = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1]; 
+0

Utilisez 'arc4random_uniform (kNumberOfColors)' au lieu de 'arc4random()% kNumberOfColors', cela élimine les biais et est plus propre. – zaph

0

Simpler getRandomColorImage (juste pour le plaisir):

- (UIImage *)getRandomColorImage { 
    NSArray *colors = @[@"red", @"brown", @"green", @"gold", @"black"]; 
    NSInteger randomNumber = arc4random_uniform((unsigned int)colors.count); 
    NSString *colorName = colors[randomNumber]; 
    return [UIImage imageNamed: colorName]; 
} 
1

- (UIImage *)getRandomImages { NSArray *imagesArray = @[@"image1", @"image2", @"image3"]; NSInteger randomNumber = arc4random_uniform((unsigned int)imagesArray.count - 1); NSString *imageNames = imagesArray[randomNumber]; return [UIImage imageNamed: imageNames]; } Le code ci-dessus va générer les images aléatoires correctes.