我正在开发一个项目,需要将自定义视图分割成正方形.您需要能够在其上拖动另一个视图,当您放下该对象时,它将捕捉到网格方块.我还需要能够迭代网格中的每个方块,并确定对象是否在特定网格方块内.
我意识到这是一个普遍的问题,但我只是在寻找可能已经存在的参考起点的任何方向,类或框架.任何方向都将非常感激.谢谢.
最佳答案 问题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;
}
希望这一切都有意义,如果您需要任何澄清,请告诉我.