我如何拖动&在UIImageViews之间放下并居中图像?

时间:2012-03-30 16:23:18

标签: objective-c ios xcode drag-and-drop uiimageview

我想知道是否有一种在UIImageViews之间拖放图像的方法,所以如果我从一个UIImageView拖动一个图像,它会在下一个UIImageView中居中显示。

我正在做的是一个非常小的国际象棋应用程序,我正在开发只是为了好玩:)我有一个简单的设置:董事会的背景和所有单元格的UIImageView。到目前为止,我成功地成功地拖延了使用UITouch和CGPoint在电路板周围放置图像。我的问题是我可以拖延将这些图像放在我的应用中的任意思是在彼此之上,在单元之间,在板的边界之外等等......所以这绝对是某种边界问题。

我处理拖拽的代码放弃事件:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [[event allTouches] anyObject];

    CGPoint touchLocation = [touch locationInView:[self view]];   

    for (UIImageView *piece in chessCells) {
        if([touch view] == piece){
            piece.center = touchLocation;
        }
    }

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    [self touchesBegan:touches withEvent:event];
}

关于for循环:我的棋盘中的所有单元格都是带有UIImageViews的空白IBOutlets,我通过将它们保存在名为“chessCells”的NSArray中来组织。我有一种方法可以在应用程序启动时在各自的单元格中显示图像。从这一点开始,我可以抓住它们并在棋盘上自由移动......但正如我所发现的那样,有点过于自由。

我一直在阅读大量的论坛,并经历了大量的教程和在线文档,因此我学到了很多东西,所以原谅我缺乏专业知识。

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:1)

您应该尝试 CGRectIntersectRect 将此添加到您的代码中

if (CGRectIntersectsRect(yourImgFrame1, yourImgFrame2)) {
    //do What ever you want
}
yourImgFrame1 yourImgFrame2 相交时,使用此代码

您可以执行任何操作

祝你好运