iOS11以后,苹果的AppStore改版,看起来更分明简洁。首页有个很炫酷的动画转场,让我感觉惊为天人,不得不佩服苹果工程师的厉害。于是抽空研究了一下。
首先我们要明白这个看起来很像一个页面的炫酷效果实际上是两个页面。就是一个简单的push操作,这个动画效果是因为重写了push、pop动画的结果。最主要的是要实现
UINavigationControllerDelegate的协议方法:
func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return self }
UIViewControllerAnimatedTransitioning协议的两个方法:
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { }
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { }
在该方法里处理动画效果与控件的位置变化以及其它一些处理使得过渡效果很逼真。
运用UIView动画写动画效果:
UIView.animate(withDuration: self.transitionDuration(using: transitionContext), delay: 0.0, usingSpringWithDamping: 0.6, initialSpringVelocity: 1.0, options: .curveLinear, animations: {
}) { (finished) in }
detail页面也加上了pan手势,通过pan.location(in: tableView)的方法判断手势的点,如果在图片上方则执行pop动画,pop回上一个界面。如果手势在下方则执行tableview滑动的效果,滑动显示具体文字。
Objective-C 代码后期补上,方法什么都一样。。。可以看着swfit写OC嘛。哈哈哈哈
网友评论