Reputation: 49
My code was working fine and animating properly in root view controller. But when I moved it into another VC and navigated there using presentViewController, the images appeared statically and were not animating.
@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")
}
}
Upvotes: 1
Views: 572
Reputation: 2587
You shouldn't do your animation in viewDidLoad because it was just initialized and doesn't have a superview yet so the animation doesn't work. Try moving your code into viewDidAppear.
Upvotes: 3