2015-03-31 76 views
0

因此,BELOW代码按照我放置的顺序显示所有这些颜色的动画。但是,如何让颜色以不特定顺序出现,而是以随机顺序显示?如何随意在单个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

查看此[SO答案](http://stackoverflow.com/a/10258341/451475)以随机化颜色数组。 – zaph 2015-03-31 02:36:49

回答

0

如果你创建了所有这些图像,并将它们添加到项目中,那么你可以只写一个辅助方法来让自己的随机图像。这可能是这样的:

- (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"]; 
    } 
} 

如果你想使事情变得更加灵活,你可以摆脱你添加到项目中的图像,并只创建与核心的帮助下飞行的任何彩色图像图形库和这个很酷的github回购:https://gist.github.com/kylefox/1689973。魔术有在这些4行(其产生随机颜色):

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

使用'arc4random_uniform(kNumberOfColors)'而不是'arc4random()%kNumberOfColors',这消除了偏见并且更清晰。 – zaph 2015-03-31 03:44:36

0

简单getRandomColorImage(只是为了好玩):

- (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]; } 上面的代码将产生正确的随机图像。