Проблема CGPoint с локального на глобальный

Я застрял в проблеме Local to Global Point в базовом приложении Objective C ViewController

У меня есть один ScrollView как SubView ViewController, который имеет от 13 до 15 UIButtons в качестве SubView за раз, есть только 3 UIButton, которые находятся в представлении ScrollView.

Я хочу получить CGPoint (Global) UIButton, который является подвидом ScrollView, но не локальной CGpoint внутри ScrollView.

Есть ли способ преобразовать локальный CGPoint в глобальный CGPoint.

Спасибо Гайз К.К.


person Kingkong    schedule 09.04.2012    source источник


Ответы (2)


скажем, у вас есть UIButton myButton, попробуйте:

CGPoint globalPoint = [[[UIApplication sharedApplication] keyWindow] convertPoint:CGPointZero fromView:myButton];

и конвертировать обратно

CGPoint localPoint = [myButton convertPoint:globalPoint fromView:[[UIApplication sharedApplication] keyWindow]];

person amleszk    schedule 09.04.2012
comment
Спасибо чувак это то что я искал - person Kingkong; 09.04.2012
comment
amleszk Дал мне прекрасную подсказку, нижеприведенная линия сработала волшебно CGPoint globalPoint = [self.view convertPoint:CGPointZero fromView:myButton]; Это дало мне идеальный результат, спасибо, чувак. - person Kingkong; 09.04.2012

А не добавить ли просто координаты содержащего объекта? Ведь если у вас есть вид, расположенный в

x: 10 y: 10: w: 100 h: 100

а в другом с видом

x: 10 y: 10 w: 20 h: 20

центр второго: (20,20), а сумма x и y дает глобальный центр, который равен (30,30)

person WhiteTiger    schedule 09.04.2012
comment
amleszk Дал мне прекрасную подсказку, нижеприведенная линия сработала волшебно CGPoint globalPoint = [self.view convertPoint:CGPointZero fromView:myButton]; Это дало мне идеальный результат, спасибо, чувак. - person Kingkong; 09.04.2012