TransformAnimation 实现了一个导航转换动画,用于替换系统导航控制器默认的 push 动画:

当你点击第一个 view controller 的 Butto,转换动画开始播放。
这个动画首先会从位于视图中央的大图片开始,然后快速移动并缩小到右下角。
动画结束时,第二个 view controller 呈现。

git 地址:https://gitee.com/kmyhy/transform-animat

用法

首先,将这 2 个文件拖到项目中:

  • UIView+Extension.swift
  • TransformAnimator.swift
    创建两个 view controller,实现 TransformAinmationViewController ,包括这两个属性:
protocol TransformAnimationViewController {var animator: TransformAnimator { get }var animatingView: UIView { get }
}

例如,假设有两个 view controllr: FirstViewController 和 SecondViewController,它们必须这样实现这 2 个属性:

var animator = TransformAnimator()
var animatingView: UIView {return imageView
}

注意 animator 是存储属性,你不能把它放到扩展中去实现。animatingView 是一个 UIView,也就是你即将对它进行动画的那个 view。通常,它可能是一个 UIImageView(也可能是一个 IBOutlet),比如像上图中的瓶子图片。

然后在 它们的 viewDidAppear 方法中:

navigationController?.delegate = animator

同时,你也需要在 viewDidDisappear 方法中添加:

navigationController?.delegate = nil

Build & run. 恭喜! 你的自定义导航转换动画大功告成了!

TransformAnimation - 一个超简单的导航转换动画相关推荐

  1. 从零学习pytorch 第1课 搭建一个超简单的网络

    课程目录(在更新,喜欢加个关注点个赞呗): 从零学习pytorch 第1课 搭建一个超简单的网络 从零学习pytorch 第1.5课 训练集.验证集和测试集的作用 从零学习pytorch 第2课 Da ...

  2. 一个超简单的反编译任务(IDAPro、X32dbg)

    一个超简单的反汇编任务 所需工具 IDAPro.X32dbg.Visual C++ 6.0 实验步骤 首先,我们新建一个简单的程序并编译运行. 这里笔者建立了一个弹窗程序,运行结果如下: 进行IDA逆 ...

  3. 一个超简单的android任务列队(排队)3

    一个超简单的android任务列队(排队)3 上一篇讲到了列队中的任务超时,这一篇继续对列队任务进行扩展,新增插入任务到列队中,可以实现插队功能,实现异步请求列队.来看代码,在LineUpTaskHe ...

  4. java jsp网页计算器_使用JSP制作一个超简单的网页计算器的实例分享

    实现一个简单的计算器程序,要求:使用jsp+javabean模式实现. 项目源代码如下: 文件:calculator.jsp 简单的计算机 进行计算 --%> cal.calculate(); ...

  5. 一个超简单的Qt数字按键

    由于只需要几个数字按键,没必要加入软件盘,在输入框旁边直接加了一块数字键,超简单,删除键使用的键盘事件,其余均为在lineedit插入字符,超级easy!对于简单按键需求的同学有参考价值! 1.在界面 ...

  6. 【小白学PyTorch】1.搭建一个超简单的网络

    文章目录: 1 任务 2 实现思路 3 实现过程 3.1 引入必要库 3.2 创建训练集 3.3 搭建网络 3.4 设置优化器 3.5 训练网络 3.6 测试 1 任务 首先说下我们要搭建的网络要完成 ...

  7. xsd文件转图片_如何将图片转化为PDF格式?分享一个超简单的方法给你

    如何将图片转化为PDF格式?有些朋友经常需要将图片转换成PDF格式文件,这样比较方便保存和传输.熟悉文件转换的朋友是知道该怎么操作的,不了解的朋友不用担心,今天我来教大家一个方法,能够帮助我们简单快速 ...

  8. 用Python做一个超简单的小游戏(一听就懂)

    前言 有的人可能学过一点Python基础,但不知道干什么好.今天就教大家做一个简单的小游戏 未经允许,禁止转载 文章目录 前言 写它会用到 源码先抛出来 知识讲解 random 介绍 语法 方法参数表 ...

  9. Android超简单底部导航ImageView+TextView+FramLayout(一)

    废话前言 刚工作的时候就事采用这种方式实现的底部导航,方便快捷,重要的是好理解. 我将采用我觉得最清晰的思路实现这种方式 一.创建主页面 为了便于查看,我只写了两个tab,其他多的照葫芦画瓢就行了 & ...

最新文章

  1. HDU 1166 敌兵布阵【树状数组】
  2. 在ASP程序设计中在使用Response对象
  3. edittext 属性
  4. cesium 修改 鼠标 样式
  5. Hibernate使用原生SQL适应复杂数据查询
  6. Linux内存管理--物理内存分配【转】
  7. 2使用教学_建水三中智能交互式液晶一体机设备投入使用
  8. java arraylist线程安全_面试题1:ArrayList 是线程安全的吗?如果要实现一个线程安全的List应该怎么做?...
  9. 解决LInux更新慢的问题, 更换国内软件源
  10. Docker实战6 之构建自己的docker镜像
  11. 如何使用ant_从 0 开始,成为 Ant-Design Contributor
  12. 如何用计算机接收光纤网络电视,家里只有一根网络电缆. 电脑和电视如何共享互联网?如何在机顶盒和路由器之间建立连接?...
  13. Xshell远程连接阿里云
  14. 组件化拆分(三)-Todos案例——单页面-详细代码
  15. 搭建turnserver(转) 稍加整理
  16. 前端程序员如何快速转型全栈工程师(基础版)
  17. 控制算法--1 二值位式控制算法
  18. 游戏业务面试准备系列1-常见业务问题汇总
  19. c语言程序设计的实验报告,C语言程序设计实验报告
  20. 基于阿里云容器服务的微服务实践 - Part 1. 微服务与Docker

热门文章

  1. postgres vacuum full 和 vacuum
  2. RMAN完全恢复与不完全恢复测试
  3. 悠哉网李代山与实力派孙红雷有点像
  4. 3ds Max快速环境闭塞的使用
  5. git 提交时报错:Branch ‘master‘ set up to track remote branch ‘master‘ from ‘origin‘.
  6. 作为开发者必须知道的5个安卓应用推广方式
  7. 不知不觉好感为“零”!录取机会少一半-程序员面试时,有哪些减分项?(注意避坑)
  8. 【每日新闻】刘多:工业互联网对我国制造业高质量发展起到重要的推动作用...
  9. Spring MVC异常统一处理(异常信息的国际化,日志记录)
  10. oracle dba 创建视图,拥有dba权限的情况下创建视图报ORA-01031: insufficient privileg错误...