2014-09-14 2 views
1

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

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 по всему экрану, я всегда получаю тот же результат, основанный на исходных координатах обоих UIImageView.

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

+0

Используйте отладчик, чтобы посмотреть, что происходит, и посмотрите рамку при перемещении вида. Также может помочь ведение журнала, а также рассмотреть [Spark Inspector] (http://sparkinspector.com), чтобы просмотреть все представления в 3D во время запуска приложения. Нет ничего, что можно было бы добавить в приложение для его использования. Возможно, вы не двигаете мнение, которое, как вы думаете. – zaph

+0

Возможно, проверьте 'bounds' вместо' frame' или отметьте 'round1.center'? возможно, проверьте положение «layer»? Все зависит от того, как вы делаете движение uiimageviews ... – ccwasden

+0

как вы перемещаете изображение? Через прокрутку? Через трансформацию? Изменяя рамки самостоятельно? – drewag

ответ

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

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

Смежные вопросы