2015-06-23 3 views
0

У меня есть игра, в которой у меня есть объект (UIImageView = redBar), который я хочу переместить с начальной точки на заданную точку (в этом случае вниз по диагонали 30 и обратно 30), после загрузки сцены. Что я делаю:Анимация движения UIImageView от начальной точки до конечной точки

UIView.animateWithDuration(1, animations: {self.redBar.center = CGPointMake(self.redBar.center.x + 30, self.redBar.center.y + 30)}, completion: {(value: Bool) in 
     UIView.animateWithDuration(1, animations: {self.redBar.center = CGPointMake(self.redBar.center.x - 30, self.redBar.center.y - 30)}, completion: nil)}) 

Что происходит, я кладу redBar UIImageView в моей раскадровке, и когда я загрузить эту сцену, это как если бы мой redBar образ телепортируется, а затем он начинает анимировать .. Это лучший способ оживить движение изображения? Мне действительно нужна помощь в этом ...

ответ

0

Правильный способ сделать это будет с CGAffineTransform. Просто поместите

self.redbar.transform = CGAffineTransformMakeTranslation(30, 30) 

Внутри вашего animateWithDuration блока, а затем использовать для -30 пути назад (форма (х: CGFloat, у: CGFloat))

Убедитесь, что UIImageView либо экземпляр из раскадровки или добавлено в viewDidLoad(). Если добавить в код, было бы безопаснее установить его фрейм в viewWillLayoutSubviews().

Дайте мне знать, если вам нужно больше кода, чтобы уйти.

+0

Спасибо за ответ! Это, похоже, дает мне ту же ошибку ... Это потому, что я использую ограничения? Я добавил свой redBar на свой StoryBoard, добавил некоторые предложенные ограничения, и когда я загружаю приложение, кажется, что redBar просто телепортируется, а THEN он делает свою анимацию! –

+1

В этом случае вам следует оживить ограничения. Перетащите экземпляр ограничений в класс, а затем в animateWithDuration установите то, что вы хотите, чтобы каждое ограничение было, а затем вызывайте self.view.layoutIfNeeded() (все еще внутри блока) – steffeydev

+0

Когда вы говорите, что это телепорт перед анимацией? Он телепортируется, если вы закомментируете блок aninationWithDuration? – steffeydev

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