获取UIView相对于其超级视图的超级视图的位置

我有一个UIView,我已经安排了UIButtons。 我想find那些UIButtons的位置。

我知道buttons.frame会给我的立场,但它只会给我立场就其直接superview。

有没有什么方法可以find这些button的位置,就UIButtons superview的超级观点而言?

例如,假设有一个名为“firstView”的UIView。

然后,我有另一个UIView,“secondView”。 这个“SecondView”是“firstView”的子视图。

然后我有UIButton作为“secondView”的子视图。

 ->UIViewController.view --->FirstView A ------->SecondView B ------------>Button 

现在,有什么办法可以find那个UIButton的位置,关于“firstView”?

你可以使用这个:

目标C

 CGRect frame = [firstView convertRect:buttons.frame fromView:secondView]; 

迅速

 let frame = firstView.convert(buttons.frame, from:secondView) 

文档参考:

https://developer.apple.com/documentation/uikit/uiview/1622498-convert

框架(X,Y,宽度,高度)。

因此宽度和高度不会改变甚至超级超级视图。 你可以很容易得到X,Y如下。

 X = button.frame.origin.x + [button superview].frame.origin.x; Y = button.frame.origin.y + [button superview].frame.origin.y; 

更新了Swift 3

  if let frame = yourViewName.superview?.convert(yourViewName.frame, to: nil) { print(frame) } 

在这里输入图像说明