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) }