所以下面的代码按照我放置的顺序显示所有这些颜色的动画。但是,我如何使这些颜色不按特定顺序显示,而是按随机顺序显示?
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];
- (UIImage *)getRandomImages {
NSArray *imagesArray = @[@"image1", @"image2", @"image3"];
NSInteger randomNumber = arc4random_uniform((unsigned int)imagesArray.count - 1);
NSString *imageNames = imagesArray[randomNumber];
return [UIImage imageNamed: imageNames];
}
以上代码将生成正确的随机图像。
如果您已经创建了所有这些图像并将它们添加到项目中,那么您只需编写一个助手方法即可获得一个随机图像。它可能看起来像这样:
- (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"];
}
}
如果你想让事情变得更加灵活,你可以去掉添加到项目中的图像,只需在Core Graphics库和这个很酷的github repo的帮助下动态创建任何彩色图像: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];
更简单的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];
}