iOS UIView高级动画 关键帧动画

关键帧动画

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

创建一个关键帧动画

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

  • 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值