質問 #1:ユーザーが別のビューをその上にドラッグできるようにする必要があります。そのオブジェクトをドロップすると、グリッドの正方形にスナップします。
UIView をドラッグしているとしましょう。UIView の touchesEnded では、UIView の x 座標と y 座標の中心値を含む center プロパティを使用し、それを関数に渡して、どのグリッド スクエアの内側にあるかをテストします。
これは次のようになります (UIView の名前が dragingView であると仮定します):
for (CGRect gridSquare in gridArray) {
if (CGRectContainsPoint(gridRect, draggingView.center)) {
// Return the gridSquare that contains the object
}
}
gridArray とは何なのか疑問に思っている方のために説明すると、これはゲーム ボードを構成するすべてのグリッド スクエアの配列です。これを作成するのに助けが必要な場合は、私に知らせてください。
質問 2:ユーザーは、グリッド内のすべての正方形を繰り返し処理し、オブジェクトがその特定のグリッド 正方形内にあるかどうかを判断できる必要があります。
上記に沿って進めることができれば、これは非常に簡単です。グリッドの四角形を繰り返し処理しているときに、gridSquare の原点値を使用して、dragView サブビューのいずれかが同じ原点を持つかどうかを確認できます。これを使用すると、特定の正方形の内側にある 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;
}
説明が必要な場合はお知らせください。