好吧我已经做了几个线程询问如何随机显示图像/选择随机图像。我已经意识到,我不知道如何将这两种方法结合在一起。
我在阵列中有5张图片。
我的.h文件:
@property (strong, nonatomic) NSArray *imageArray;
我的.m文件:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
UIImage *image1 = [UIImage imageNamed:@"image-1.png"];
UIImage *image2 = [UIImage imageNamed:@"image-2.png"];
UIImage *image3 = [UIImage imageNamed:@"image-3.png"];
UIImage *image4 = [UIImage imageNamed:@"image-4.png"];
UIImage *image5 = [UIImage imageNamed:@"image-5.png"];
_imageArray = @[image1, image2, image3, image4, image5];
}
这就是我现在所拥有的,我一直在玩其他在其他地方找到的代码,但没有成功,所以不予考虑。
现在你看到我拥有的东西,这就是我想要做的: 我需要使用一种方法,从我的数组中随机选择我的5张图像之一,然后在我的视图中随机显示。
我还需要重复这个循环,但是有约束。我需要每个图像都有一个“值”,如:image-1等于1,图像-2等于2,图像-3等于3,图像-4等于4,图像-5等于5。重复循环,直到显示的图像等于总值50.
我不确定从哪里开始使用哪种方法。我肯定随机挑选和显示对你们中的一些人来说很容易,但值和重复直到等于50似乎很复杂。所以非常感谢任何和所有的帮助!提前感谢任何可以提供帮助的人,我对编码很新,所以如果你能解释为什么使用你的代码,它会更有帮助!谢谢!
编辑:这家伙试图帮助我在我的另一个线程中添加整个选择随机图像。他的答复在这里:How to display multiple UIImageViews我使用了他的代码但没有任何反应。我不确定他的代码是否在某处出错或者我做错了什么。
答案 0 :(得分:1)
使用递归循环和int来跟踪您所需数量为50的进度。
每次循环,你都会想:
这样的事情:
//in your .h declare an int to track your progress
int myImgCount;
//in your .m
-(void)randomizeImages {
//get random number
int randomImgNum = arc4random_uniform(5);
//use your random number to get an image from your array
UIImage *tempImg = [_imageArray objeactAtIndex:randomImgNum];
//add your UIImage to a UIImageView and place it on screen somewhere
UIImageView *tempImgView = [[UIImageView alloc] initWithImage:tempImg];
//define the center points you want to use
tempImgView.center = CGPointMake(yourDesiredX,yourDesiredY);
[self addSubview:tempImgView];
[tempImgView release];
//increment your count
myImgCount = myImgCount+(randomImgNum+1);
//check your count
if (myImgCount<50) {
[self randomizeImages]; //do it again if not yet at 50
}
}
这样的事情对你有用。
答案 1 :(得分:0)
此代码使用github上提供的M42RandomIndexPermutation类:
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSArray *images = @[@"image-1", @"image-2", @"image-3", @"image-4", @"image-5"];
M42RandomIndexPermutation *permutation = [[M42RandomIndexPermutation alloc] initWithCount:images.count usingSeed:[NSDate date].timeIntervalSince1970];
for(int i = 0; i<images.count; i++) {
NSInteger index = [permutation next];
NSLog(@"%@",images[index]);
}
//TODO assign them to imageviews instead of logging them
}
return 0;
}
答案 2 :(得分:0)
也许这会有所帮助:
int index = arc4random % ([_imageArray count] - 1);
imageView.image = [_imageArray objectAtIndex:index];
干杯!