如何在一个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];

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

最新更新