专栏名称: Cocoa开发者社区
CocoaChina苹果开发中文社区官方微信,提供教程资源、app推广营销、招聘、外包及培训信息、各类沙龙交流活动以及更多开发者服务。
目录
相关文章推荐
51好读  ›  专栏  ›  Cocoa开发者社区

iOS特效之破碎的ViewController

Cocoa开发者社区  · 公众号  · ios  · 2017-08-25 11:03

正文

请到「今天看啥」查看全文



使用苹果提供的自定义ViewController过渡动画技术,可以很方便的将BrokenGlassEffectView植入到过渡动画中。将要被dismiss掉的ViewController渲染到一张图片上,传递给BrokenGlassEffectView,然后使用这张图片做破碎的动画,这样就可以产生ViewController破碎的效果了。


实现自定义ViewController过渡动画


想要实现自定义过渡动画,首先要实现一个动画管理类,这个类控制着过渡动画如何进行。本文的动画控制类在BrokenGlassTransitionAnimator.swift中。下面是动画的核心代码。


func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {

let containerView = transitionContext.containerView

guard let fromVC = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from),

let toVC = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to) else {

return

}

let snapshotImage = createImage(layer: fromVC.view.layer)

let brokenGlassView = BrokenGlassEffectView.init(frame: fromVC.view.bounds)

fromVC.view.removeFromSuperview()

containerView.addSubview(toVC.view)

containerView.addSubview(brokenGlassView)

brokenGlassView.setImageForBroke(image: snapshotImage)

brokenGlassView.beginBroke()

DispatchQueue.main.asyncAfter(deadline: .now() + 1.2) { [weak brokenGlassView] in

brokenGlassView?.removeFromSuperview()

brokenGlassView?.destroy()







请到「今天看啥」查看全文