1

taskViewUIViewのサブクラスであるクラスのインスタンスがあります。このインスタンスはUIScrollView位置(0、50)にあり、これUIScrollViewはself.viewにあります。問題はtaskView、画面の位置を確認する方法です。この要素のグローバルな位置を確認したいと思います。taskViewのような要素は、の1つまたは複数UIScrollViewです。

4

2 に答える 2

3

これtaskViewにより、ウィンドウ全体の座標における の位置 (原点)が取得されます。

UIWindow *window = [[UIApplication sharedApplication] keyWindow];
CGPoint p = [taskView convertPoint:taskView.bounds.origin toView:window];
于 2012-10-12T14:58:43.453 に答える
3

次の方法を使用して、ビュー間で座標を変換できます。

したがって、ビューのフレームを上位の親ビューに関連するように変換するには、次のコードを使用できます。

UIView *someParentView;
UIView *childView;

CGRect frameRelativeToParent = [childView convertRect:childView.bounds
                                               toView:someParentView];

両方のビューが同じビュー階層の一部である必要があります (つまり、同じウィンドウ内に存在する必要があります)。

これらのメソッドの 2 番目の引数を指定するnilと、ベース ウィンドウ座標が処理されます。

ウィンドウ間で座標を変換するための対応するメソッドもありますUIWindow(例: )。convertRect:toWindow:ここで 2 番目の引数を指定するnilと、画面座標が処理されます。画面座標を処理する必要がある 1 つの場所は、キーボード通知を処理するときです。キーボードのフレームは画面座標で提供されるため、これらのメソッドを使用する前に、これらのメソッドを使用してウィンドウ座標に戻す必要があります。

于 2012-10-12T14:59:48.023 に答える