1、UIView 动画

  • 核心动画 和 UIView 动画 的区别:

    • 核心动画一切都是假象,并不会真实的改变图层的属性值,如果以后做动画的时候,不需要与用户交互,通常用核心动画(转场)。
    • UIView 动画必须通过修改属性的真实值,才有动画效果。
  • 1.1 block 方式

    • 设置控件位置、尺寸、透明度等的代码,放在 animateWithDuration: block 中,将自动以动画的方式改变。
    // 开始动画,动画持续时间 2 秒
    [UIView animateWithDuration:1.0 animations:^{ // 设置动画结束后的效果值 // 改变控件的位置和尺寸,改变后的位置或大小
    self.redView.frame = CGRectMake(150, 50, 50, 50); } completion:^(BOOL finished) { // 动画完成后的操作 // 开始一个新的动画
    [UIView animateWithDuration:1.0 animations:^{ // 改变控件的位置和尺寸,改变后的位置或大小
    self.redView.frame = CGRectMake(50, 150, 80, 80);
    }];
    }];
    • 效果

    • 弹簧效果的动画

    [UIView animateWithDuration:1.0 delay:0 usingSpringWithDamping:0.2 initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    // SpringWithDamping: 弹性系数,越小弹簧效果越明显
    self.redView.frame = CGRectMake(150, 50, 50, 50);
    } completion:nil];
    • 效果

  • 1.2 动画块方式

    • 设置控件位置、尺寸、透明度等的代码,放在 beginAnimations: 和 commitAnimations 之间,将自动以动画的方式改变。
    // 开始一个动画块
    [UIView beginAnimations:nil context:nil]; // 动画设置 // 设置动画时间
    [UIView setAnimationDuration:1.0]; // default = 0.2 // 设置延时
    [UIView setAnimationDelay:0.0]; // 设置指定的时间后开始执行动画,default = 0.0 // 设置动画执行节奏
    /*
    UIViewAnimationCurveEaseInOut, // slow at beginning and end 开始和结束慢速,默认
    UIViewAnimationCurveEaseIn, // slow at beginning 开始慢速
    UIViewAnimationCurveEaseOut, // slow at end 结束慢速
    UIViewAnimationCurveLinear // 匀速
    */
    [UIView setAnimationCurve:UIViewAnimationCurveLinear]; // 设置重复次数
    [UIView setAnimationRepeatCount:MAXFLOAT]; // default = 0.0. May be fractional // 设置是否自动返回,以动画的方式返回
    [UIView setAnimationRepeatAutoreverses:YES]; // default = NO. used if repeat count is non-zero // 设置是否从当前状态开始动画
    [UIView setAnimationBeginsFromCurrentState:YES]; // default = NO // 设置代理
    [UIView setAnimationDelegate:self]; // default = nil // 设置动画开始时执行的代理方法,自定义方法
    [UIView setAnimationWillStartSelector:@selector(startAnimations)]; // default = NULL // 设置动画结束时执行的代理方法,自定义方法
    [UIView setAnimationDidStopSelector:@selector(stopAnimations)]; // default = NULL // 动画之行后效果值 // 设置透明度,改变后的透明度
    self.redView.alpha = 1.0; // 改变控件的位置和尺寸,改变后的位置或大小
    self.redView.frame = CGRectMake(150, 150, 80, 80); // 结束一个动画块
    [UIView commitAnimations]; // 动画开始时执行的代理方法,自定义方法
    - (void)startAnimations { NSLog(@"startAnimations");
    } // 动画结束时执行的代理方法,自定义方法
    - (void)stopAnimations { NSLog(@"stopAnimations");
    }
    • 效果

  • 1.3 形变属性方式

UIView 动画的更多相关文章

  1. 转一篇简洁的UIView动画编程方法

    iOS  中的 UIView 动画编程其实还是很简单的,像 CSS3 一样,在给定的时间内完成状态连续性的变化呈现.比如背景色,Frame 大小,位移.翻转,特明度等. 以前我使用的编程方式都是用下面 ...

  2. UIView动画

    UIView动画 一.commitAnimations方式使用UIView动画 1.commitAnimations方式使用UIView动画 [UIView beginAnimations:@&quo ...

  3. UIView动画效果

    做出UI界面,实现程序功能,是重中之重,但是通过动画提升使用体验,一般人应该不会拒绝吧. 那么问题又来了,怎么做? 一: 稳扎稳打: 一步一步来吧,毕竟,心急吃不了热豆腐. 1.开启一个动画 2,设置 ...

  4. 核心动画和UIView动画的区别

    核心动画和UIView动画的区别 1.核心动画制作用在Layer 2.核心动画的修改的属性都是假象,他的真实位置没有发生变化()

  5. 个人学习对UIView动画的总结

    我的博客之前已经开通五个月了,但是一直没有写东西.一是不敢写,二是也不知道写啥.毕竟是一个刚刚入行大半年的菜鸟,现在总想通过各种办法提高自己.之前总感觉用到一些东西,只是当时搞懂了一点,加上并没有总结 ...

  6. UIView动画学习笔记

    UIView的动画是通过修改控件的属性来达到动画的效果,如:渐变, 移动. 废话不多说,直接上代码: - (void)loadView{ [super loadView]; _leftView = [ ...

  7. iOS动画篇:UIView动画

    iOS的动画效果一直都很棒很,给人的感觉就是很炫酷很流畅,起到增强用户体验的作用.在APP开发中实现动画效果有很多种方式,对于简单的应用场景,我们可以使用UIKit提供的动画来实现. UIView动画 ...

  8. iOS之UIview动画

    一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成, ...

  9. iOS - UIView 动画

    1.UIView 动画 核心动画 和 UIView 动画 的区别: 核心动画一切都是假象,并不会真实的改变图层的属性值,如果以后做动画的时候,不需要与用户交互,通常用核心动画(转场). UIView ...

  10. iOS 动画总结—UIView动画

    1.概述 UIKit直接将动画集成到UIView类中,实现简单动画的创建过程.UIView类定义了几个内在支持动画的属性声明,当这些属性发生改变时,视图为其变化过程提供内建的动画支持. 执行动画所需要 ...

随机推荐

  1. Docker -- resolve "join node timeout" error

    在worker节点机器上通过docker swarm join 到 manger node时,报Timeout错误,如下: Error response from daemon: Timeout wa ...

  2. PCB打样前的注意事项

    0.画板前,在制定规则的时候,一定要查看生产厂家的生产工艺.  (厂家能打几层板.最小间距.焊盘最小和最大尺寸等等) 1.查看焊盘的孔径是否合适.  (检查能否插进去) 2.仔细检查购买的三端器件的引 ...

  3. C#多线程List的非线程安全性

    背景:最近在做多线程方面的工作,工作中发现多线程中很多坑,这里就有一个List添加对象的误区,这里做个分享跟大家讲讲这个坑是怎么形成的怎么样避免. 示例: 代码及错误: 如果单单只从程序逻辑上看,应该 ...

  4. python's twenty eithth day for me 模块和包

    模块: 什么是模块: 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀,但其实import加载的模块分为四个通用类别: 1,使用python编写的代码 ...

  5. 解决maven构建工程错误:Failure to transfer org.apache.maven.plugins:maven-jar-plugin:pom:2.4 from错误

    问题描述: mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=ma ...

  6. Python时间日期函数讲解

    所有日期.时间的api都在datetime模块内. 1. 日期输出格式化 datetime => string import datetime now = datetime.datetime.n ...

  7. BGP基本配置的方法

    边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议. BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议. as100 as200 ...

  8. dubbo学习 二 dubbo源码大致查阅

    源码的解析在官网都已经写的非常详细,可以参考:http://dubbo.io/Developer+Guide-zh.htm   服务提供者暴露一个服务的详细过程 首先ServiceConfig类拿到对 ...

  9. Hive split 分割函数

    hive字符串分割函数 split(str, regex) - Splits str around occurances that match regexTime taken: 0.769 secon ...

  10. SpringBoot13 利用mybatis-plus自动生成entity、dao、service、controller

    1 环境配置 = 2 新建一个新的springboot项目 2.1 选择一些必要的依赖 web jpa mysql <?xml version="1.0" encoding= ...