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

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

关键帧动画

任何动画要表现运动或变化,至少前后要给出两个不同的关键状态,而中间状态的变化和衔接电脑可以自动完成,表示关键状态的帧动画叫做关键帧动画。 所谓关键帧动画,就是给需要动画效果的属性,准备一组与时间相关的值,这些值都是在动画序列中比较关键的帧中提取出来的,而其他时间帧中的值,可以用这些关键值,采用特定的插值方法计算得到,从而达到比较流畅的动画效果。 下面我们就来看看如何创建一个关键帧动画

创建一个关键帧动画

首先我们需要用到下面的一个方法,为动画设置一些时长还有是否需要延迟,等属性。

  • duration:动画的总时长
  • delay:延迟启动动画的时间
  • options:选择动画的效果。
  • animations :需要执行的动画,里面可以是多个关键帧动画
+(void)animateKeyframesWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(7_0);复制代码

添加关键帧动画的方法

  • frameStartTime:当前帧动画开始的时间 = 第几个帧/动画的总时长。
  • relativeDuration一帧的时长 = 总帧数 / 总时长。 在block函数中可以对当前帧的动画做一些其他的设置,比如位置上的改变。
+(void)addKeyframeWithRelativeStartTime:(double)frameStartTime relativeDuration:(double)frameDuration animations:(void (^)(void))animations NS_AVAILABLE_IOS(7_0);复制代码

##示例代码 添加一个关键帧动画

[UIView animateKeyframesWithDuration:6.0 delay:0.0 options:UIViewKeyframeAnimationOptionBeginFromCurrentState animations:^{    [UIView addKeyframeWithRelativeStartTime:0 relativeDuration:0.1 animations:^{        self.redView.frame = CGRectMake(200, 100, 100, 100);    }];} completion:^(BOOL finished) {}];复制代码

创建一个四帧的动画

-(void)kryFramAnimation{    void (^keyFram)(void) = ^(){        for (int i = 0; i < 4; i ++) {           __block CGRect redFram = self.redView.frame;         [UIView addKeyframeWithRelativeStartTime:i / 4.0 relativeDuration:1 / 4.0 animations:^{            switch (i) {                case 0:                    redFram.origin.x += 100;                    self.redView.frame = redFram;                    break;                case 1:                    redFram.origin.y += 100;                    self.redView.frame = redFram;                    break;                case 2:                    redFram.origin.x -= 100;                    self.redView.frame = redFram;                    break;                case 3:                    redFram.origin.y -= 100;                    self.redView.frame = redFram;                    break;                default:                    break;            }         }];                   }    };    [UIView animateKeyframesWithDuration:4.0 delay:0.0 options:UIViewKeyframeAnimationOptionBeginFromCurrentState animations:keyFram completion:nil];复制代码

以上就是一个关键帧动画的简单使用了。

转载于:https://juejin.im/post/5c1a0dfee51d454827179d0a

你可能感兴趣的文章
创业公司做数据分析(四)ELK日志系统
查看>>
如何在Linux中压缩及解压缩.bz2文件
查看>>
数据为王的时代 大数据对消费金融的影响
查看>>
万事达启动“用你自己替代密码”计划
查看>>
阿里巴巴“NASA计划”新进展:一个世界纪录!
查看>>
Linux下使用USB网络
查看>>
5G标准化进程提速 射频器件市场空间将打开
查看>>
《分布式系统:概念与设计》一3.3.6 拥塞控制
查看>>
“烧烤模式”下 安防设备如何经得住考验?
查看>>
人工智能时代,语音技术怎么赚钱?
查看>>
美大选被攻击 未来选举要回归纸质选票?
查看>>
SCRM火了,SaaS服务再现新风口
查看>>
黑客站在ATM机面前就直接吐出钞票 如何做到的?
查看>>
TensorFlow教程之资源 4.5 术语表
查看>>
菜鸟网络算法专家朱礼君:为你的淘宝订单选外箱的是人工智能 | CCF-GAIR 2017
查看>>
CMU教授金出武雄演讲:户外机器人系统 | CCF-GAIR 2017
查看>>
未来3年内25G将成数据中心主流网络
查看>>
《云计算:原理与范式》一1.3 云计算的架构与类型
查看>>
Strategy Analytics:视频监控是安防系统成功的关键
查看>>
四家企业联合发起 OPEN AI LAB,听听余凯等大佬怎么说
查看>>