2015-01-22 3 views
4

У меня есть кнопка и анимация. Как я могу написать в функции (Цветочная анимация), что при нажатии кнопки анимация скрывается или удаляется. Любой из этих вариантов будет выполнен.Как удалить анимацию, нажав кнопку. Swift

У кого-нибудь есть идеи?

@IBAction func settings(sender: UIButton) { 
    settingsPlate.hidden = false 
    viewTwo.hidden = false 
    exit.hidden = false 

    dimmedView.backgroundColor = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0) 
    dimmedView.alpha = 0.5 
    dimmedView.hidden = false 

} 

Это анимация цветов. Я хотел бы написать здесь код, который говорит, что если кнопка нажата, уйдите или скройте.

func animateFlowerOne(){ 

    let options = UIViewAnimationOptions.CurveEaseInOut 

    //Flower 1 Four 
    let flowers = UIImageView() 
    flowers.image = UIImage(named: "flower-face") 
    flowers.frame = CGRect(x: 70, y: 380, width: 0, height: 0) 
    self.view.addSubview(flowers) 


    UIView.animateWithDuration(500.0, delay: 200.0, options: options, animations: { 
     flowers.frame = CGRect(x: 70, y: 380, width: 15, height: 15) 
     }, completion: { animationFinished in 
      UIView.animateWithDuration(500.0, delay: 200.0, options: options, animations: { 
       flowers.frame = CGRect(x: 70, y: 380, width: 0, height: 0) 

       }, completion: { animationFinished in 
        flowers.removeFromSuperview() 
        self.animateFlowerOne() 
      }) 
    }) 
} 

ответ

4

Вам необходимо сохранить ссылку на представление изображения, которое вы оживляющий (например, в случае, свойство этого вида контроллера). Если кнопка нажата, то в обработчике действия для кнопки используйте эту ссылку, чтобы поговорить с изображением. Вы можете удалить текущую анимацию с слоя изображения с помощью removeAllAnimations, а затем вы можете делать все, что захотите, с изображением.

Похоже, что ваша анимация круглая (повторяющаяся), поэтому вам может понадобиться какое-то свойство экземпляра, которое действует как флаг, чтобы анимация могла его проверить и остановить. В противном случае вы просто повторяетесь навсегда.

+0

Хорошо спасибо. Эта логика имеет смысл. Как мне сделать эту ссылку на этот образ, который я оживляю? И как мне заставить его говорить с изображением, когда я нажимаю кнопку? Я попытался использовать removeAllAnimations в выражении if, например -> if dimmedView.hidden = false then flowers.layer.removeAllAnimations. Не уверен, что я делаю это правильно. Были беспорядки с ним весь день, но пока не удалось. –

+0

Вы говорите «let flowers = ...» Проблема в том, что 'flowers' является переменной _local_; вы не можете ссылаться на него нигде. Вместо этого объявите 'цветы' как свойство экземпляра этого контроллера представления. Теперь вы можете установить его здесь и обратиться к нему позже в обработчике действий с кнопкой. Свойства экземпляра - это способ обмена объектными ссылками между различными функциями внутри объекта. См. Также мой новый учебник Swift: http://www.apeth.com/swiftBook/ch03.html#_variable_scope_and_lifetime – matt