Это может быть глупый вопрос, но я не могу найти на него ответа ...

У меня есть UIScrollView и несколько UIButtons. Когда я нажимаю кнопку, я хочу знать, где находится кнопка на экране. Если я использую button.frame, он дает мне позицию внутри UIScrollView, что нормально.

Как я могу найти x и y относительно экрана нажатой кнопки?

Заранее спасибо.

7
CristiC 11 Апр 2011 в 23:25

2 ответа

Лучший ответ

Ваше возражение было правильным - вместо этого используйте

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view

Из UIView, например

[button.superview convertPoint:button.frame.origin toView:nil];

Не проверял, но я считаю, что это должно сработать. Также см. iPhone - получение положения UIView во всем UIWindow

11
Community 23 Май 2017 в 15:02
5
Если я прокручиваю UIScrollView по горизонтали, у меня может быть button.frame.origin.x = 1017 или что-то в этом роде, поэтому ваш пример не будет правильным.
 – 
CristiC
11 Апр 2011 в 23:31

Для быстрого:

let pointXY:CGPoint = (button.superview?.convert(button.frame.origin, to: nil))!
print("button pointXY: \(pointXY.debugDescription)")
7
lenooh 25 Дек 2018 в 17:23
1
Сэкономил много времени, я нахожу это последние 3 часа, большое спасибо
 – 
steveSarsawa
1 Дек 2020 в 18:06