iphone – iOS绘制网格视图,用于拖放与该网格对齐的对象

我正在开发一个项目,需要将自定义视图分割成正方形.您需要能够在其上拖动另一个视图,当您放下该对象时,它将捕捉到网格方块.我还需要能够迭代网格中的每个方块,并确定对象是否在特定网格方块内.

我意识到这是一个普遍的问题,但我只是在寻找可能已经存在的参考起点的任何方向,类或框架.任何方向都将非常感激.谢谢.

最佳答案 问题1:用户需要能够在其上拖动另一个视图,当您放下该对象时,它将捕捉到网格方块.

让我们说你拖着一个UIView.在UIView的touchesEnded中,我将使用包含UIView的x和y坐标中心值的center属性,并将其传递给一个函数,该函数测试它内部的网格方块.

这看起来像这样(假设UIView是名称draggingView):

for (CGRect gridSquare in gridArray) {
    if (CGRectContainsPoint(gridRect, draggingView.center)) {
        // Return the gridSquare that contains the object
    }
}

现在万一你想知道gridArray是什么,它是构成你的游戏板的所有网格方块的数组.如果您需要帮助,请告诉我.

问题#2:用户需要能够迭代网格中的每个方块,并确定对象是否在特定网格方块内.

如果你能够按照上面的说法进行操作,那么这很容易.迭代网格方块时,您可以使用gridSquare原点值来查看是否有任何draggingView子视图具有相同的原点.使用此方法,您可以返回特定方块内的UIView.见下文:

- (UIView *)findViewInSquare {
    for (CGRect rect in gridArray) {
        for (UIView *view in [self.view subViews]) {
            if (CGPointEqualToPoint(view.frame.origin, rect.origin)) {
                return view;   // Returns the view in the grid square
            }
        }
    }
    return nil;
}

希望这一切都有意义,如果您需要任何澄清,请告诉我.

点赞