Получить должность ему UIView в отношении суперпанель его суперпанель по


у меня есть UIView, в котором я устроил UIButtons. Я хочу найти позиции этих UIButtons.

Я знаю, что buttons.frame даст мне позиции, но он даст мне позиции только в отношении его непосредственного супервизора.

есть ли способ, которым мы можем найти позиции этих кнопок, в отношении супервизора uibuttons superview?

например, предположим, что есть UIView с именем "firstView".

тогда у меня есть еще один UIView, "secondView". Этот " SecondView "является подвидом"firstView".

тогда у меня есть UIButton в качестве подвида на "secondView".

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

теперь, есть ли способ, которым мы можем найти положение этого UIButton, по отношению к "firstView"?

4 61

4 ответа:

Вы можете использовать это:

С

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

обновлено для Swift 3

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

        print(frame)
    }

enter image description here

рамка: (X,Y,ширина,высота).

следовательно ширина и высота не изменят даже wrt супер-супер вид. Вы можете легко получить X, Y следующим образом.

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

хотя это не относится к кнопке в иерархии, как я спросил, мне было легче визуализировать и понимать:

отсюда: первоисточник

enter image description here

ObjC:

CGPoint point = [subview1 convertPoint:subview2.frame.origin toView:viewController.view];

Swift:

let point = subview1.convert(subview2.frame.origin, to: viewControll.view)