Как СЛУЧАЙНО показать много изображений на одном 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];
3 ответа
- (UIImage *)getRandomImages {
NSArray *imagesArray = @[@"image1", @"image2", @"image3"];
NSInteger randomNumber = arc4random_uniform((unsigned int)imagesArray.count - 1);
NSString *imageNames = imagesArray[randomNumber];
return [UIImage imageNamed: imageNames];
}
Приведенный выше код будет генерировать правильные случайные изображения.
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];
}
Если вы создали все эти изображения и добавили их в проект, то вы можете просто написать вспомогательный метод, чтобы получить случайное изображение. Это может выглядеть так:
- (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: 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];