Получить координаты CGRect динамически

Я пытаюсь определить расстояние между двумя UIImageView на моем экране, и для этого я планировал вычесть центральные координаты изображения 2 (подвижного) из изображения 1 (неподвижного). Для этого мне нужно иметь возможность динамически получать координаты этих изображений, и я использую что-то вроде этого:

    var centerBoardX = CGRectGetMidX(BlackBoard.frame)
    var centerBoardY = CGRectGetMidY(BlackBoard.frame)
    var centerRoundX = CGRectGetMidX(round1.frame)
    var centerRoundY = CGRectGetMidY(round1.frame)

    println(centerBoardX - centerRoundX)
    println(centerBoardY - centerRoundY)

Но даже если я перемещаю image2 по экрану, я всегда получаю один и тот же результат на основе начальных координат обоих UIImageViews.

Что случилось ? Почему я получаю только начальные координаты, а не новые? Спасибо !


person Nicolas Kalogeropoulos    schedule 14.09.2014    source источник
comment
Используйте отладчик, чтобы увидеть, что происходит, следите за кадром при перемещении представления. Ведение журнала также может помочь. Также рассмотрите возможность использования Spark Inspector, чтобы просматривать все виды в 3D, пока вы запускаете приложение. нечего добавить в ваше приложение, чтобы использовать его. Возможно, вы не меняете точку зрения, о которой думаете.   -  person zaph    schedule 15.09.2014
comment
может быть, проверьте bounds вместо frame или проверьте round1.center? может проверить позицию layer? Все зависит от того, как вы заставляете перемещаться uiimageviews ...   -  person ccwasden    schedule 15.09.2014
comment
как вы перемещаете изображение? Через режим прокрутки? Через преобразование? Самостоятельно меняя раму?   -  person drewag    schedule 15.09.2014


Ответы (1)


Итак, я нашел то, что было не так. Мои UIImageViews определяются фреймами, и я получал координаты фрейма, которые всегда одинаковы. Чтобы получить правильные координаты, мне нужно было получить информацию из супервизора объекта. Итак, рабочий код

var centerBoardX = BlackBoard.superview?.center.x
var centerBoardY = BlackBoard.superview?.center.y
var centerRoundX = Round1.superview?.center.x
var centerRoundY = Round1.superview?.center.y

println(centerBoardX! - centerRoundX!)
println(centerBoardY! - centerRoundY!)

И теперь он отлично работает!

person Nicolas Kalogeropoulos    schedule 15.09.2014