Obtenir la position d'UIView par rapport à sa vue d'set

J'ai un UIView, dans lequel j'ai arrangé UIButtons. Je veux find les positions de ces UIButtons.

Je suis conscient que buttons.frame me donnera les positions, mais cela ne me donnera que des positions par rapport à son top immédiat.

Y a-t-il un moyen de find les positions de ces buttons, par rapport à la vue d'set de UIButtons?

Par exemple, supposons qu'il y ait UIView nommé "firstView".

Ensuite, j'ai un autre UIView, "secondView". Ce "SecondView" est une sous-vue de "firstView".

Ensuite, j'ai UIButton comme sous-vue sur le "secondView".

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

Maintenant, est-il possible de find la position de ce UIButton, par rapport à "firstView"?

    Vous pouvez utiliser ceci:

    Objectif c

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

    Rapide

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

    Référence de la documentation:

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

    Cadre: (X, Y, largeur, hauteur).

    Par conséquent, la largeur et la hauteur ne changeront pas même avec la vue super-super. Vous pouvez facilement get le X, Y comme suit.

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

    Mise à jour pour Swift 3

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

    entrez la description de l'image ici