2015-03-31 7 views
0

Таким образом, код НИЖЕ показывает анимацию всех этих цветов в том порядке, в котором я его разместил. Однако как я могу сделать так, чтобы цвета отображались не в определенном порядке, а вместо этого отображались в порядке RANDOM?Как RANDOMLY показать много изображений на одном 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

ответ

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

0

Simpler 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]; } выше код будет генерировать правильные случайные изображения.