如何在UIImageViews之间拖放图像并将其居中?

问题描述 投票:0回答:1

我正在开发国际象棋应用程序,目前我有一个简单的设置:所有单元格的板背景和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中进行组织。我有一种方法,可在应用启动时在其各自的单元格中显示图像。从这一刻起,我就可以抓住它们并在棋盘上自由移动它们了。。。但是,正如我发现的那样,有点太自由了。

objective-c ios xcode drag-and-drop uiimageview
1个回答
1
投票

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

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

使用此代码,当您的[[yourImgFrame1与yourImgFrame2相交时,您可以执行任何操作

祝你好运
© www.soinside.com 2019 - 2024. All rights reserved.