Swift之微信朋友圈图片浏览器

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转场的:
    • UIViewControllerTransitioningDelegate
    • UINavigationControllerDelegate
    • UITabBarControllerDelegate
  • 定义动画内容的
    • UIViewControllerAnimatedTransitioning
    • UIViewControllerInteractiveTransitioning
  • 表示动画上下文的
    • 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
    weak open var 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值