2012-03-30 125 views
0

我想知道是否有拖放UIImageViews之间的图像的方式,以便如果我从一个UIImageView拖动图像,它显示在下一个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循环:在我的船上所有的细胞是空白IBOutlets使用的UIImageViews,我通过他们留在一个NSArray的组织称为“chessCells” 。我有一种方法可以在应用程序启动时在各自的单元格中显示图像。从这一点上,我可以抓住他们并在棋盘上自由移动......但正如我发现的那样,有点太自由了。

我一直在阅读大量的论坛,并通过大量的教程和在线文档,所以我正在学习很多,因为我这样做是为了原谅我缺乏专业知识。

任何帮助,将不胜感激:)

回答

1

你应该CGRectIntersectRect尝试这个使用此代码添加到您的代码

if (CGRectIntersectsRect(yourImgFrame1, yourImgFrame2)) { 
    //do What ever you want 
} 

当你yourImgFrame1相交yourImgFrame2可以执行任何动作

好运