WedX - журнал о программировании и компьютерных науках

CAKeyFrameAnimation не работает после presentViewController

Мой код работал нормально и правильно анимировался в корневом контроллере представления. Но когда я переместил его в другой VC и перешел туда с помощью presentViewController, изображения появлялись статически и не анимировались.

Контроллер корневого представления

       @IBAction func glassFillingButtonClicked(sender: UIButton) {
    let storyBoard = UIStoryboard(name: "Main", bundle:nil)

    let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("waterFilling") as! GlassFillingViewController
    self.presentViewController(nextViewController, animated:true, completion:nil)

водаНаливВК

    class GlassFillingViewController: UIViewController {
@IBOutlet weak var dropView: UIView!
@IBOutlet weak var dropImage: UIImageView!
@IBOutlet weak var dropImage2: UIImageView!
@IBOutlet weak var dropImage3: UIImageView!
@IBOutlet weak var dropImage4: UIImageView!
@IBOutlet weak var dropImage5: UIImageView!
@IBOutlet weak var dropImage6: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    dropAnimation()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func addWaterDroppingAnimation(beginTime: CFTimeInterval) -> CAKeyframeAnimation {
    let waterDroppingAnimation = CAKeyframeAnimation.init(keyPath: "opacity")
    waterDroppingAnimation.beginTime = beginTime
    waterDroppingAnimation.duration = 1.0
    waterDroppingAnimation.values = [0.2,1,0.2]
    waterDroppingAnimation.repeatCount = HUGE
    return waterDroppingAnimation
}

func dropAnimation() {
    dropImage.layer.addAnimation(addWaterDroppingAnimation(0.0), forKey: "basic")
    dropImage2.layer.addAnimation(addWaterDroppingAnimation(0.2), forKey: "basic")
    dropImage3.layer.addAnimation(addWaterDroppingAnimation(0.4), forKey: "basic")
    dropImage4.layer.addAnimation(addWaterDroppingAnimation(0.6), forKey: "basic")
    dropImage5.layer.addAnimation(addWaterDroppingAnimation(0.8), forKey: "basic")
    dropImage6.layer.addAnimation(addWaterDroppingAnimation(1.0), forKey: "basic")
}

}

15.03.2016

Ответы:


1

Вы не должны делать свою анимацию в viewDidLoad, потому что она была только что инициализирована и еще не имеет супервизора, поэтому анимация не работает. Попробуйте переместить свой код в viewDidAppear.

15.03.2016
  • Спасибо. Это была ошибка. 15.03.2016
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

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

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]