0

移動できる 2 つの UIImageView をアプリに配置したいと考えています。一方の画像が他方の画像と接触すると、アクションがトリガーされ、両方の画像が元の場所に戻されます。これに関する提案はありますか?

私は使っている

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch *touch = [touches anyObject];

// If the touch was in the placardView, move the placardView to its location
if ([touch view] == resultImage) {
    CGPoint location = [touch locationInView:self.tabBarController.view];
    resultImage.center = location;

    return;
}
}

これにより、resultImage が自由に動き回ることができます。その一部が他の画像 (静止している) に触れたことを検出し、それが発生したときにアクションを実行し、resultImage を開始位置に戻す方法を知る必要があるだけです。

4

1 に答える 1

3

頭のてっぺんからCGRectContainsPoint、ターゲットのフレームと動画の四隅を使用して、それらが接触しているかどうかを確認するために4回使用できます。

if(CGRectContainsPoint(collisionTarget.frame, resultImage.frame.origin) ||
   CGRectContainsPoint(collisionTarget.frame, CGPointMake(resultImage.frame.origin.x,resultImage.frame.origin.y+resultImage.frame.size.height)) ||
   CGRectContainsPoint(collisionTarget.frame, CGPointMake(resultImage.frame.origin.x+resultImage.frame.size.width,resultImage.frame.origin.y)) ||
   CGRectContainsPoint(collisionTarget.frame, CGPointMake(resultImage.frame.origin.x+resultImage.frame.size.width,resultImage.frame.origin.y+resultImage.frame.size.height)){
    //do something
}

編集:私は完全に忘れていましCGRectIntersectsRectた。あなたはそれを使うことができます。

if(CGRectIntersectsRect(imageView1.frame,imageView2.frame)){
    //do something
}

touchesMoved2 つの画像ビューのフレームを使用して最初の画像ビューを移動した直後に、メソッドで上記のチェックを行うだけです。次に、最初の位置を以前の時点の位置に戻します。その位置をプロパティまたは何か以前に保存しておく必要があります。

于 2013-02-01T04:20:47.750 に答える