2011-11-08 13 views
2

これは可能ですか?もしそうなら、誰でも私に教えてくれますか?回転しているuiviewの4点の座標

+1

回転された矩形のすべてのコーナーの座標を計算するために、基本的なtrig(sinとcosine、arcsinとarccos)を使用できます。 –

+0

しかし、現在私はorigin.xとorigin.yの値しか持っていません。他の座標を計算するにはどうすればいいですか? –

答えて

1
CGPoint topLeft = view.bounds.origin; 
topLeft = [[view superview] convertPoint:topLeft fromView:view]; 

CGPoint topRight = CGPointMake(view.bounds.origin.x + view.bounds.width, view.bounds.origin.y); 
topRight = [[view superview] convertPoint:topRight fromView:view]; 

// ... likewise for the other points 

最初のポイントは、ビューの座標空間であります"直立"。次に、次のステートメントは、そのポイントが親ビューの座標空間に対応するポイントを見つけます。変換されていないビューは、view.frame.originに等しいことに注意してください。上記の計算では、変換されたビューのコーナーに相当する部分がview.frameになります。

+0

これは動作します私は左下の座標を得るためにこれをどのように使うべきかはわかりませんが、画像が含まれていると、 'view.bounds.width'ではなく' view.image.size.width'を使う方が正確です。 –

+0

ちょうど左下の座標を把握しました: 'CGPoint bottomRight = CGPointMake(self.dragView.bounds.origin.x + self.dragView.image.size.width、self.dragView.bounds.origin.y + self.dragView.image。 size.height); bottomRight = [[self.dragView superview] convertPoint:bottomRight fromView:self.dragView]; ' –

3
  • ビューのフレームの4箇所(view.frame
  • は、これと同じアフィンCGPointApplyAffineTransform(と兄弟を使用して、4つのポイントに変換を適用する次に、あなたのビューに適用CGAffineTransformview.transform
  • を取得する取得CGAffineTransform Referenceの方法)
+0

私はそれをテストしていないことに注意してください。トランスフォームの起点を作るために変換を適用する必要があります(ビューのanchorPointです。 、0、変換自体を適用して、変換をやり直してください。おそらく両方のケースを試してみてください。使用している座標系を管理することを忘れないでください(つまり、CGPoint座標が表される参照/原点/座標空間です(おそらくスーパービューの境界座標系ですが、サブビューのanchorPointを中心にします)。 – AliSoftware

関連する問題