如何随机在单个UIImage上显示许多图像

时间:2015-03-31 01:53:37

标签: ios animation uiimage nsarray imagenamed

所以BELOW代码按照我放置它的顺序显示所有这些颜色的动画。但是,如何才能使颜色按照特定顺序显示,而是以RANDOM顺序显示?

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

3 个答案:

答案 0 :(得分: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]; } 上面的代码将生成正确的随机图像。

答案 1 :(得分: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"];
    }
}

如果你想让事情变得更加灵活,你可以摆脱你添加到项目中的图像,并在Core Graphics库和这个很酷的github repo的帮助下动态创建任何彩色图像:{{ 3}}。这四条线(产生随机颜色)的神奇之处在于:

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

答案 2 :(得分: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];
}