iOS实现日历翻页动画

2020-01-15 17:45:32刘景俊

动画开始和停止时,进行一些处理:


//因为上面设置了 transitioin.delegate = self,这两个代理方法会自动调用
override func animationDidStart(anim: CAAnimation) {
  //动画开始时,判断当前动画是代表往上翻页,还是往下翻页,来刷新日历时间
  animatiing = true
  let components = GregorianCalendar?.components([.Year,.Month,.Day], fromDate: date)
  if anim.valueForKey("month") as! String == "next" {
    components?.month += 1
  }else if anim.valueForKey("month") as! String == "pre"{
    components?.month -= 1
  }
  date = (GregorianCalendar?.dateFromComponents(components!))!
  dateDidChaged!(date: date)
}

//动画结束时,将layer的transform属性设置为初始值,并移除dayView的layer上翻页的动画
override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
  if flag {
    animatiing = false
    animationContainerView.layer.transform = CATransform3DIdentity
    dayView.layer.transform = CATransform3DIdentity
    dayView.layer.removeAnimationForKey("pageCurl")
  }
}

总结:

这篇文章没有介绍太多详细的内容,其实翻页的动画实现还有别的方法,但是因为我想实现的是可以沿着四个对角进行动画的效果,所以最终选择了这个方法,上面说的好像不是很具体,如果不是很明白,可以先查看一下CATranstion的使用方法。以上就是本文的全部内容,希望对大家开发IOS动画的时候能有所帮助。


注:相关教程知识阅读请移步到IOS开发频道。