34

ウィンドウ座標系で scrollView の原点を取得したい。たとえば、現在、scollView の原点は (0,51) です。ただし、ウィンドウ座標系では、51 + 44(ナビゲーションバーの高さ)+20(ステータスバーの高さ) = 115 である必要があります。つまり、ウィンドウ座標系では、scrollView.frame.origin は (0,115) である必要があります。convertPoint: メソッドを試しましたが、(0,51) または (0,0) を取得することがあります。これに対する解決策を提供してください。ありがとう

4

4 に答える 4

58

適切なビュー間で変換していないようです。ビューのフレームは、独自の内部座標ではなく、スーパービューの座標に設定されるため、ビューの原点をウィンドウ座標に変換しようとしている場合は、スーパービューを使用する必要があります。

[[self superview] convertPoint:self.frame.origin toView:theWindow];

ただし、ゼロ点をビュー自体からウィンドウに変換する方が簡単です。2 つのコードは同等であるため、オリジンを使用する必要はまったくありません。

[self convertPoint:CGPointZero toView:theWindow];
于 2010-07-10T14:38:06.370 に答える
10

TechZen ソリューションを試してみましたが、役に立ちませんでした。scrollView の原点を変換する代わりに、apple docs UIWindow class Reference を参照し、このコードを使用してキーボードの endCenter をビューの座標系に変換しました[self.view convertPoint:endCentre fromView:[UIApplication sharedApplication].keyWindow]。このコードは機能したため、私の問題は解決しました。ただし、なぜ scrollView.origin の適切な座標が得られないのかという疑問が残ります。そのため、基本的には scrollView.origin の代わりにキーボードの endcenter を変換することで回避策を得ました。ああ、キーボードが画面に表示されたときに scrollView の新しい高さを計算するために、このすべてのことを行っていました。したがって、誰かがこの問題の解決策またはより良い解決策を持っている場合は、私たち全員に知らせてください.

于 2010-07-11T16:01:30.010 に答える