我有一个包含我想要显示在视图上的图像的数组。我有一个循环遍历我的数组并选择一个随机图像,然后在我的视图中随机显示图像。每个图像都有一个“值”,循环运行直到达到50的总“值”。
我的问题是,我不希望我的图像彼此接触或堆叠在彼此之上。我使用谷歌和youtube以及各种其他编码帮助网站,由于某些原因找不到符合我需求的解决方案。
-(void)randomizeImages {
//get random number
int randomImgNum = arc4random_uniform(5);
//use random number to get an image from array
UIImage *tempImg = [_imageArray objectAtIndex:randomImgNum];
//add UIImage to a UIImageView and place it on screen somewhere
UIImageView *tempImgView = [[UIImageView alloc] initWithImage:tempImg];
//define the center points
tempImgView.center = CGPointMake(arc4random() % 320,arc4random() % 480);
[self.view addSubview:tempImgView];
//increment count
myImgCount = myImgCount+(randomImgNum+1);
//check count
if (myImgCount<50) {
[self randomizeImages];//do it again if not yet at 50
}
}
我打算包含一个截图,但显然我需要10点声望。我已经到处寻求帮助,并在几天前发布了这个问题,但是建议的代码一直给我szone_malloc_should_clear + 14
错误,我不知道这意味着什么或如何解决它。问题主题已经死了,我真的需要帮助解决这个问题。
答案 0 :(得分:0)
您必须记录生成图像的所有位置。为50张图片制作50个迭代的外部for循环。 然后做一个内循环
i
0
到i-1
的所有图片,并检查新图片是否未堆叠在另一张图片上,如果触摸,再次循环重复,为安全限制(假设100次迭代)检查this link是否有矩形重叠检测。你可以用一个简单的技巧升级算法,这样那些矩形就不会相互靠近......或者google up how to check rectangle collision
rect_1_bottom_right_point_x = x + rect_1_width
)margin
和x
中减去y
,向右下角x
和y
添加一个边距,使它们看起来更大测试