我正在创建一个应用程序,需要让按钮的框架相对于视图。
我有一个带注释的mapview。在选择注释时,它会显示标注气泡。这有一个按钮作为右视图。我点击该按钮时会调用一个选择器。
现在我想获得关于视图边界的按钮框架。我想知道按钮在视图中的位置?
为此,我尝试了:
[self.view convertRect:btn.frame fromView:self.view];
和
[self.view convertRect:btn.frame toView:self.view];
我没有得到正确的结果。
答案 0 :(得分:2)
btn.frame
相对于其(按钮的)超级视图,因此self.view
传递fromView
将无法获得预期的结果,因为self.view
不是按钮的超级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];