Swift之微信朋友圈图片浏览器
最近闲来无事,突然对微信, 微博, QQ等社交APP的九宫格的图片浏览功能非常感兴趣, 最近就尝试着研究了一下:
这里先附上Demo地址
- 在介绍项目之前, 先介绍三个基础知识
CATransition转场动画ViewController自定义转场UIBesization贝塞尔曲线
一. CATransition转场动画
示例代码
//4. 转场动画
let transition = CATransition()
transition.type = transitionType
transition.subtype = isNext ? kCATransitionFromRight : kCATransitionFromLeft
transition.duration = 1
downloadImage(url: imageURL)
baseImage.layer.add(transition, forKey: "transition")
更多关于该动画的详细介绍, 可参考iOS出门必备之CoreAnimation(核心动画)中第七种CA动画, 故这里不多做介绍
二. ViewController自定义转场
从iOS7开始,苹果更新了自定义ViewController转场的API,会用到的几个协议
protocol:
- 描述ViewController转场的:
UIViewControllerTransitioningDelegateUINavigationControllerDelegateUITabBarControllerDelegate
- 定义动画内容的
UIViewControllerAnimatedTransitioningUIViewControllerInteractiveTransitioning
- 表示动画上下文的
UIViewControllerContextTransitioning
1-1. 描述ViewController转场的
- 为什么苹果要引入这一套API?因为在iOS7之前,做转场动画很麻烦,要写一大堆代码在ViewController中。
- 引入这一套API之后,在丰富功能的同时极大程度地降低了代码耦合,实现方式就是将之前在ViewController里面的代码通过protocol分离了出来。
- 顺着这个思路往下想,实现自定义转场动画首先需要找到ViewController的delegate。
- 苹果告诉我们切换ViewController有三种形式:
UITabBarController内部切换UINavigationController切换present ViewController- 这三种方式是不是需要不同的protocol呢?
1-2. 详解Protocol
UIViewControllerTransitioningDelegate自定义模态转场动画时使用。- 设置
UIViewController的属性transitioningDelegate
weak open var transitioningDelegate: UIViewControllerTransitioningDelegate?- 设置
UINavigationControllerDelegate自定义navigation转场动画时使用- 设置
UINavigationController的属性delegate
weak open var delegate: UINavigationControllerDelegate?- 设置
UITabBarControllerDelegate自定义tab转场动画时使用- 设置
UITabBarController的属性delegate
- 设置

最低0.47元/天 解锁文章
185

被折叠的 条评论
为什么被折叠?



