использование animatewithduration для перемещения изображения

Я пытаюсь переместить изображение несколько раз. Вот как я пытался это реализовать.

override func viewDidAppear(animated: Bool) {

        UIView.animateWithDuration(1, animations: { () -> Void in

            self.sattelite.center.x = 50
            self.sattelite.center.y = 100

            self.sattelite.center.x = 50
            self.sattelite.center.y = 50

            self.sattelite.center.x = 50
            self.sattelite.center.y = 300



        })

}

Однако метод animatewithduration выполняет только одно из движений. Есть ли способ анимировать все три движения изображения? Спасибо.


person Mbusi Hlatshwayo    schedule 21.04.2015    source источник
comment
какое из движений он выполняет?   -  person milo526    schedule 21.04.2015


Ответы (3)


вы можете легко создавать цепочки анимаций; начать другой по завершении:

  • Вот иллюстрация:

    //1st animation
    UIView.animateWithDuration(1.0,
        delay: 0.0,
        options: .CurveEaseInOut | .AllowUserInteraction,
        animations: {
             //some code ex : view.layer.alpha = 0.0
        },
        completion: { finished in
    
            //second animation at completion
            UIView.animateWithDuration(1.0
                , delay: 0.0,
                , options: .CurveEaseInOut | .AllowUserInteraction,
                , animations: { () -> Void in
    
                   //some code ex : view.layer.alpha = 1.0
    
                }
                ,   completion: { finished in
    
                    //third animation at completion
                    UIView.animateWithDuration(1.0,
                        delay: 0.0,
                        options: .CurveEaseInOut | .AllowUserInteraction,
                        animations: {
                             //some code ex : view.layer.alpha = 0.0
                        },
                        completion: { finished in
                        //FINISH : 3 animations!!!
                    })
    
    
            })
    })
    
person MacKentoch    schedule 21.04.2015

Вам нужно либо связать анимацию с завершением, либо использовать анимацию ключевого кадра.

person Dare    schedule 21.04.2015

Используйте версию анимации, которая имеет завершение:

class func animateWithDuration(_ duration: NSTimeInterval,
                    animations animations: () -> Void,
                    completion completion: ((Bool) -> Void)?)

Делайте первую анимацию только на animations и запускайте вторую на completion. Третий идет в завершение второго.

Таким образом, в основном это цепочка анимаций, где каждая начинается, когда заканчивается предыдущая.

person Rory McKinnel    schedule 21.04.2015