iOS视图控制器自定义过渡与页面视图控制器详解
可中断动画与自定义过渡动画
在自定义过渡动画时,可中断动画(interruptibleAnimator)是一个重要的概念。根据动画结束状态(结束或回到起始),需要向过渡上下文发送不同的消息:
anim.addCompletion { finish in
if finish == .end {
ctx.finishInteractiveTransition()
ctx.completeTransition(true)
} else {
ctx.cancelInteractiveTransition()
ctx.completeTransition(false)
}
}
当动画结束时,会调用 animationEnded
方法清理实例属性:
func animationEnded(_ transitionCompleted: Bool) {
self.interacting = false
self.context = nil
self.anim = nil
}
还可以使自定义过渡动画可中断。借助属性动画器(property animators),在视图动画过程中,属性动画器能实现动画视图的可触摸性,并允许暂停动画。用户可以在动画进行中抓住动画视图并移动,松开后动画继续。
另外,还可以