7

メイン ウィンドウに相対的な座標を取得したいので、2 番目のパラメーターとして nil を指定して convertRect:toView: を使用しています。

CGRect result = [self.view convertRect:addToList.frame toView:nil];

しかし、結果として、私はいつも得る

NSRect: {{5, 30}, {35, 35}}

addToList-view を生成するために使用する値とまったく同じです。

addToList = [UIButton buttonWithType:UIButtonTypeCustom];
addToList.frame = CGRectMake(5.0f, 30.0f, 35.0f, 35.0f);

画面の右下隅に配置されたビューに addToList-button を追加する場合、たとえば iPad の横向きの 950、700、35、35 のような CGRect が期待されます。一番上のビューに関連するボタン。

最初に、UIViewController の initWithFrame:-method で変換を行いました。しかし、今、私は後でそれをやっています...何が欠けていますか?

ありがとう!

編集:「self.view」がUIScrollView内にあることは重要ですか?

4

1 に答える 1

6

のドキュメントを見るconvertRect:toView:と、渡す rect が、メソッドを呼び出しているビューの境界内で定義されていることがわかります。おそらくウィンドウ全体を使用するためself.view、rect はウィンドウに関して変化しません。ウィンドウに対するボタンの実際の位置を取得するには、ボタンの親にメッセージを送信する必要があります。

于 2011-06-07T08:33:25.487 に答える