animateWithDuration:<#(NSTimeInterval)#> delay:<#(NSTimeInterval)#> options:<#(UIViewAnimationOptions)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>

  • duration: 动画时长
  • delay: 决定了动画在延迟多久之后执行
  • options:用来决定动画的展示方式,接下来会进行讲解
  • animations:转化成动画表示的代码
  • completion:动画结束后执行的代码块

不是所有修改属性的操作放到animations代码块中都是变成动画实现的 —— 不管你怎么修改一个视图的tag,或者是delegate。因此,可实现动画的属性必定会导致视图的重新渲染。
这些可以生成动画的属性大致可以分成这么三类:坐标尺寸视图显示形态变化

坐标尺寸:

    • bounds:修改这个属性会结合center属性重新计算frame。建议通过这个属性修改尺寸
    • frame:修改这个属性通常会导致视图形变的同时也发生移动,然后会重新设置centerbounds属性
    • center: 设置后视图会移动到一个新位置,修改后会结合bounds重新计算frame

视图显示:

  • backgroundColor: 修改这个属性会产生颜色渐变过渡的效果,本质上是系统不断修改了tintColor来实现的
  • alpha:修改这个属性会产生淡入淡出的效果
  • hidden:修改这个属性可以制作翻页隐藏的效果

形态变化:

  transform:修改这个属性可以实现旋转、形变、移动、翻转等动画效果,其通过矩阵运算的方式来实现,因此更加强大

上面我们使用到的动画方法中有一个重要的参数options,它能让你高度的自定义动画效果。下面展示这个参数类型的值集合,你可以通过结合不同的参数来实现自己的动画:

 Repeating:

UIViewAnimationOptionRepeat       //动画循环执行
UIViewAnimationOptionAutoreverse //动画在执行完毕后会反方向再执行一次
UIViewAnimationOptionRepeat参数不仅是让动画循环播放,并且还导致了completion的回调永远无法执行 Easing:
 UIViewAnimationOptionCurveEaseInOut   //先加速后减速,默认(先加速,后减速)
UIViewAnimationOptionCurveEaseIn //由慢到快(逐渐加速)
UIViewAnimationOptionCurveEaseOut //由快到慢(速度领先,然后减速)
UIViewAnimationOptionCurveLinear //匀速(匀速运动)
Transitioning:
在视图、图片切换的时候,我们还能通过传入下面的这些参数来实现一些特殊的动画效果:使用方法
 UIView transitionWithView:<#(nonnull UIView *)#> duration:<#(NSTimeInterval)#>
options:<#(UIViewAnimationOptions)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>
  UIViewAnimationOptionTransitionNone            //没有效果,默认
UIViewAnimationOptionTransitionFlipFromLeft //从左翻转效果
UIViewAnimationOptionTransitionFlipFromRight //从右翻转效果
UIViewAnimationOptionTransitionCurlUp //从上往下翻页
UIViewAnimationOptionTransitionCurlDown //从下往上翻页
UIViewAnimationOptionTransitionCrossDissolve //旧视图溶解过渡到下一个视图
UIViewAnimationOptionTransitionFlipFromTop //从上翻转效果
UIViewAnimationOptionTransitionFlipFromBottom //从上翻转效果
 弹簧效果:
animateWithDuration:(NSTimeInterval) delay:<#(NSTimeInterval)#> usingSpringWithDamping:<#(CGFloat)#> initialSpringVelocity:<#(CGFloat)#>
options:<#(UIViewAnimationOptions)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>
  • dampingRatio:速度衰减比例。取值范围0 ~ 1,值越低震动越强
  • velocity:初始化速度,值越高则物品的速度越快

 transform动画:

transform是一个非常重要的属性,它在矩阵变换的层面上改变视图的显示效果,完成旋转、形变、平移等等操作。在它被修改的同时,视图的frame也会被真实改变。有两个数据类型用来表示transform,分别是CGAffineTransformCATransform3D。前者作用于UIView,后者为layer层次的变换类型。基于后者可以实现更加强大的功能,但我们需要先掌握CGAffineTransform类型的使用.

在开始使用transform实现你的动画之前,先介绍几个常用的函数:

/// 连接两个变换效果  返回的t = t1 * t2
CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2) /// 矩阵初始值 [ 1 0 0 1 0 0 ]
CGAffineTransformIdentity /// 自定义矩阵变换,需要掌握矩阵变换的知识才知道怎么用。参照上面推荐的原理链接
CGAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty) /// 旋转视图。传入参数为 角度 * (M_PI / 180)。等同于 CGAffineTransformRotate(self.transform, angle)
CGAffineTransformMakeRotation(CGFloat angle)   括号里是旋转度数
CGAffineTransformRotate(CGAffineTransform t, CGFloat angle) /// 缩放视图。等同于CGAffineTransformScale(self.transform, sx, sy)
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)  宽高缩放比例(可以为负数 当于对称过去)
CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy) /// 位移视图。等同于CGAffineTransformTranslate(self.transform, tx, ty)
CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)  是相对于原位置右移 下移的参数
CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty)

UIView的动画之初步学习的更多相关文章

  1. UIView Animation 动画学习总结

    目录 一.前言 二.UIView Animation 2.1 简单动画 2.2 关键帧动画 2.3 View 的转换 三.CALayer Animation 3.1 基本动画(CABasicAnima ...

  2. 第十九篇 jQuery初步学习

    jQuery 初步学习   jQuery可以理解为是一种脚本,需要到网上下载,它是一个文件,后缀当然是js的文件,它里面封装了很多函数方法,我们直接调用即可,就比方说,我们用JS,写一个显示与隐藏,通 ...

  3. iOS开发UI篇—核心动画(UIView封装动画)

    iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...

  4. json2.js的初步学习与了解

    json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...

  5. ios uiview封装动画(摘录)

    iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...

  6. 老周的ABP框架系列教程 -》 一、框架理论初步学习

    老周的ABP框架系列教程 -- 一.框架理论初步学习   1. ABP框架的来源与作用简介 1.1  简介 1.1.1       ABP框架全称为"ASP.NET Boilerplate ...

  7. iOS开发——动画编程Swift篇&(一)UIView基本动画

    UIView基本动画 // MARK: - UIView动画 ------------------------------------- // MARK: - UIView动画-淡入 @IBActio ...

  8. IOS UIVIEW layer动画 总结(转)

    转发自:http://www.aichengxu.com/article/%CF%B5%CD%B3%D3%C5%BB%AF/16306_12.html   IOS UIVIEW layer动画 总结, ...

  9. 用layer添加UIView的动画

    项目有时会遇到用UIView 添加动画的情况,这里我觉得在layer上添加动画比较好,因为可以详细地设定动画属性,方便理解 下面是一个旋转动画: -(void)roundBtnAction:(id)s ...

随机推荐

  1. .NET踩坑记录【不断更新】

    NET 4.0 Tasks 使用 ThreadPool 可设置最大并发级别. 多个WebClient多线程下载受System.Net.ServicePointManager.DefaultConnec ...

  2. 为什么要用Math.sqrt(i)方法

    java 练习题 判断 101-200 之间有多少个素数,并输出所有素数 public class Prime { public static int count = 0; public static ...

  3. C语言中的sizeof和strlen

    1.sizeof是算符,strlen是函数: 2.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的: 3.大部分编译程序,在编译的时候就把sizeof计算 ...

  4. keil中查看内存数据

    1.工具栏中 view->Memory Windows 然后  c:0 表示读取0地址开始的代码区数据  d:0 表示读取0地址开始的数据区数据  x:0表示读取0地址开始的外部数据区

  5. Opensuse13.2开启ssh

    要开启ssh很简单,步骤分为三步 步骤1: 安装ssh zypper install ssh 步骤2:启动ssh daemon网上很多通过 service 命令或者 init.d 目录中的脚本启动ss ...

  6. SQL学习笔记——SQL中的数据查询语句汇总

    where条件表达式 --统计函数 Select count(1) from student; --like模糊查询 --统计班上姓张的人数 select count(*) from student ...

  7. 【1】Laravel5.1 安装

    1.安装composer http://www.phpcomposer.com/ 这个是中文网址里边有教程,但是由于被墙的缘故,可以通过下边这个链接下载Windows安装包 http://docs.p ...

  8. Java系列--第一篇 Maven+Spring+Spring MVC+mybatis 示例

    基于Maven的Spring+SpringMVC+Mybatis的一个小项目的搭建,由于使用Maven3.1.0管理,所以Spring等都将使用的是时下(2013/9/8)最新的版本.即从http:/ ...

  9. $.unique() 对象组成的数组去掉重复对象

    发现一件事,一个完全由对象组成的数组,用$.unique()方法去掉重复的时候不管用 var arr = [{text:'第一个',value:'1'},{text:'第二个',value:'2'}, ...

  10. hadoop中datanode无法启动

    一.问题描述 当我多次格式化文件系统时,如 [hadoop@xsh hadoop]$ ./bin/hdfs namenode -format 会出现datanode无法启动,查看日志(/usr/loc ...