2012-04-12 4 views
2

ズーム可能なUIScrollViewには、カスタム描画ビュー(2つの円)が含まれています。ビューがズームされると、Appのウィンドウでサークルの中心がどこにあるのかを知りたいと思います。これらのステップを考える: 1. The view at 1x ズーム可能なスクロールビューでは、コンテンツの場所をウィンドウで確認する方法は?

ビューを1X

enter image description here

任意のレベルでズームビューで、第一円

enter image description here

ビューに集中ピンチと任意のレベルでズームし、ピンチは右上隅にフォーカスされます
私が尋ねる意味は、スクロールビューの上に円を含む別のビューを置くと、このビューの円はスクロールの小さな円と同心(同じサイズである必要はない)であるビューのビュー、新しいサークルの中心はどこにありますか?

答えて

4

のUIViewの座標変換方法を使用している場合、あなたのカスタムビューがスクロールビューに埋め込まれていることは関係ありません。

MyCustomCircleView *circleView; 

CGPoint centerInLocalCoordinates = circleView.centerOfACircle; 
CGPoint centerInWindowCoordinates = [circleView convertPoint:centerInLocalCoordinates 
                 toView:nil]; 

はたぶん、ウィンドウ座標は、あなたが探しているものではありません。ウィンドウの座標空間は常に縦向きで、下にホームボタンがあることを覚えておいてください。デバイスを横向きに保持すると、座標は(もちろん)回転します。

ビューコントローラのビューの座標空間など、スーパービューの座標に変換する方が簡単かもしれません。

+0

ありがとう、完璧に働いています。ところで、 'toView:'に 'nil'を渡すのではなく、別のビューを渡しました(上記の編集を参照)。 – CodeBreaker

0

サークルを描画しましたか? scrollView.contentOffsetscrollView.contentSizescrollView.zoomScaleの組み合わせがあなたの望むものです。これらの値を使用して翻訳とスケーリングに戻ることができます。

+0

?なぜ落選ですか? – samson

+0

-1非常に複雑すぎる。他のビューの変換を考慮しません。 CodeBreakerはウィンドウの座標を尋ねましたので、ビュー階層のルートに変換する必要があります。 –

+0

フレームワーク・メソッドは、ビュー変換の細部の細部についてよりよく知っています。 –

関連する問題