显示没有图像堆叠的imageViews

时间:2013-11-02 20:38:21

标签: ios objective-c cocoa-touch uiimage

我有一个包含我想要显示在视图上的图像的数组。我有一个循环遍历我的数组并选择一个随机图像,然后在我的视图中随机显示图像。每个图像都有一个“值”,循环运行直到达到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错误,我不知道这意味着什么或如何解决它。问题主题已经死了,我真的需要帮助解决这个问题。


屏幕截图

screen shot

1 个答案:

答案 0 :(得分:0)

您必须记录生成图像的所有位置。为50张图片制作50个迭代的外部for循环。 然后做一个内循环

  1. 为编号为i
  2. 的新图片生成随机x,y坐标
  3. 循环显示从0i-1的所有图片,并检查新图片是否未堆叠在另一张图片上,如果触摸,再次循环重复,为安全限制(假设100次迭代)
  4. 找到好坐标后,绘制图片并将x,y坐标存储到数组并退出内循环
  5. 检查this link是否有矩形重叠检测。你可以用一个简单的技巧升级算法,这样那些矩形就不会相互靠近......或者google up how to check rectangle collision

    1. 为左上角和右下角的位置创建新的临时变量并计算它们(例如rect_1_bottom_right_point_x = x + rect_1_width
    2. 从左上角marginx中减去y,向右下角xy添加一个边距,使它们看起来更大测试
    3. 现在测试这两个矩形是否重叠