3

アプリを作成していますが、ビューに対してボタンのフレームを取得する必要があります。

注釈付きのマップビューがあります。注釈を選択すると、コールアウトバブルが表示されます。右のアクセサリビューとしてボタンがあります。そのボタンをタップすると呼び出されるセレクターがあります。

次に、ビューの境界を基準にしてボタンのフレームを取得します。ビューのどこにボタンがあるのか​​知りたいですか?

そのために私は試しました:

[self.view convertRect:btn.frame fromView:self.view];

[self.view convertRect:btn.frame toView:self.view];

正しい結果が得られません。

4

1 に答える 1

2

btn.frameその(ボタンの)スーパービューに相対的であるため、を渡すself.viewと、ボタンのスーパービューではないため(注釈呼び出しボタンの場合)fromView、期待される結果が得られません。self.viewしたがって、そのコードは次のようになります。

CGRect rect = [self.view convertRect:btn.frame fromView:btn.superview];


同様に、toView呼び出しでは、メソッドはボタンのスーパービューで呼び出される必要があります。これは、ボタンにbtn.frame関連しているためです(ではありませんself.view)。

CGRect rect = [btn.superview convertRect:btn.frame toView:self.view];
于 2012-09-10T13:18:06.313 に答える