我正在开发国际象棋应用程序,目前我有一个简单的设置:所有单元格的板背景和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的空白IBOutlet,我通过将它们保存在称为'chessCells'的NSArray中进行组织。我有一种方法,可在应用启动时在其各自的单元格中显示图像。从这一刻起,我就可以抓住它们并在棋盘上自由移动它们了。。。但是,正如我发现的那样,有点太自由了。
您应该尝试使用CGRectIntersectRect将此添加到您的代码中
if (CGRectIntersectsRect(yourImgFrame1, yourImgFrame2)) {
//do What ever you want
}
使用此代码,当您的[[yourImgFrame1与yourImgFrame2相交时,您可以执行任何操作
祝你好运