博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS - UIView 动画
阅读量:5949 次
发布时间:2019-06-19

本文共 3061 字,大约阅读时间需要 10 分钟。

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);        }];    }];
    • 效果

      animation66

  • 弹簧效果的动画

    [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];
    • 效果

      animation83

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");    }
    • 效果

      animation67

1.3 形变属性方式

  • 具体讲解见 。

转载于:https://www.cnblogs.com/QianChia/p/6359662.html

你可能感兴趣的文章
如何挑选优质光模块?
查看>>
初学telnet
查看>>
C++线程入口函数的几种方式
查看>>
成都课得在线|UI该不该放入网络运营范畴
查看>>
内联元素的padding,margin,border等不起作用的原因
查看>>
事务与并发控制
查看>>
初识shell文本处理工具之gawk-sed
查看>>
也来谈谈RPC
查看>>
Cisco ASA SSL ×××远程访问设置 二
查看>>
构建镜像 - 每天5分钟玩转容器技术(12)
查看>>
平衡二叉树
查看>>
centos7 中 systemd systemctl管理服务的命令
查看>>
企业级办公室iptables防火墙应用案例
查看>>
Ubuntu python 安装使用sqlalchemy
查看>>
HAProxy 之 ACL介绍和使用
查看>>
OEL 6.4中安装Oracle 11g_R2_64bit
查看>>
vSphere 5 中的多网卡 vMotion
查看>>
Python实例:向量基本操作
查看>>
7月第一周.COM增近8万 ×××域名.XXX仅增14个
查看>>
12月第3周在线视频网站覆盖数排名TOP15:优酷夺冠
查看>>