0

次の質問については、下の画像を参照してください。表示されている青とオレンジの円は UIView のものです。UIPanGestureRecognizer を持つ青い UIView をドラッグし、それに応じてオレンジ色の円を移動させ、現在と同じように青い円から同じ距離を保つことができるようにしたいと考えています。つまり、青い円を下にドラッグすると、オレンジ色の UIView は青い円と平行のままで、下にも移動するはずです。青い円を右にドラッグすると、オレンジ色の円も右に移動し、青い円からの距離が現在と同じになります。

画像

したがって、現在、円は UIPanGestureRecognizer を持つ同じクラスの一部です。これらのビューをドラッグするコードは次のとおりです。

-(void)dragging:(UIPanGestureRecognizer *)p {


UIView *newView = p.view;
if (p.state == UIGestureRecognizerStateBegan) {
    self.origC = newView.center;
}
self.delta = [p translationInView:newView.superview];
CGPoint c = self.origC;

c.x +=self.delta.x;
c.y +=self.delta.y;

newView.center = c;

[self.delegate refreshView];
}

UIPanGestureRecognizer クラス内で、指定されたビューの座標系でパン ジェスチャの変換を取得できます。

self.delta = [p translationInView:newView.superview];

これは、オレンジ色の円の翻訳を申請するために必要なデルタだと思いますが、どうすればよいかわかりません。どんな助けでも大歓迎です。ありがとうございました!

4

2 に答える 2

0

直接ドラッグしたポイントに対して行っているのとまったく同じように行います。

if (p.state == UIGestureRecognizerStateBegan) {
    self.origC = newView.center; // your code
    self.origD = otherView.center; // new code
}
CGPoint c = self.origC; // your code
c.x +=self.delta.x; // your code
c.y +=self.delta.y; // your code
newView.center = c; // your code
CGPoint d = self.origD; // new code
d.x +=self.delta.x; // new code
d.y +=self.delta.y; // new code
otherView.center = d; // new code
于 2013-05-09T01:45:47.017 に答える