0

UIViewユーザーが画面の下部にある「トレイ」からイメージビューをドラッグできる比較的単純なアプリを作成しました。ビューがドロップされると、それ自体が「ターゲット」のサブビューに追加されUIViewます。

私の問題は、イメージビューをターゲットビューにドロップすると、フレームが完全に間違っており、イメージビューがターゲットビューの別の位置に (一見ランダムに) ジャンプすることです。

私はこれで髪を引き裂き、大規模な頭がおかしくなりました。スーパービューでドラッグされたビューの座標を取得し、それをターゲット ビューの座標に変換する方法はありますか?

ご覧のとおり、アイコンを「トレイ」ビューから取り出し、ドラッグが始まるとメイン ビューに移動します。終了したら、アイコンをターゲット ビューに追加するだけです。

if (gesture.state == UIGestureRecognizerStateBegan){
        if (icon.superview == viewTray) {
            [self closeTray:nil];
            [self.view addSubview:icon];
        }
    }


if (gesture.state == UIGestureRecognizerStateEnded) {
    [viewTarget addSubview:icon];
}

xib の基本のイメージ:

http://i.imgur.com/obRKMaT.png

4

2 に答える 2

2

ジェスチャ レコグナイザーを使用して、viewTarget のフレーム内で指が触れている場所を次の方法で特定します。

CGPoint p = [gesture locationInView:viewTarget];

次に、アイコンの中心をその点に設定すると、完了です。

icon.center = p;
[icon removeFromSuperView];
[viewTarget addSubview:icon];
于 2013-02-06T15:40:30.730 に答える
1

問題は、フレームがそのスーパービューの境界内にあることです。したがって、新しいスーパービューにドロップすると、同じではありません。変換する必要があります。

このコードは、superView 座標系から targetView 座標系に変換します。おそらく直後にこれを行う必要があります[viewTarget addSubview:icon];

[viewTarget convertRect:icon.frame fromView:icon.superView];
于 2013-02-06T14:37:35.143 に答える