The "sampleIndex" KeyPath Of CABasicAnimation

AnimationWithKeyPath 是实例化 CABasicAnimation的方法,其中iOS内部已经实现了多种多样的keypath。这里记录一下一个不常见的keypath — “sampleIndex”。

该动画能把一个图片从头开始播放。如下面这样一个图片:
这里写图片描述

我们设置好一个layer。其中 MCSpriteLayer是继承与CALayer的一个开源类。

CGImageRef imgRef = spriteImage.CGImage;//spriteImage为目标图片

CGSize fixedSize = CGSizeMake(spriteImage.size.height * 2.0, spriteImage.size.height * 2.0);

self.sprite = [MCSpriteLayer layerWithImage:imgRef sampleSize:fixedSize];

[self.sprite setFrame:CGRectMake((self.bounds.size.width - fixedSize.width / 2.0f) / 2.0f, (self.bounds.size.height - fixedSize.height / 2.0f) / 2.0f, fixedSize.width / 2.0f, fixedSize.height / 2.0f)];

创建动画

    CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"sampleIndex"];
    anim.fromValue = @(1); // initial frame
    anim.toValue = @(20); // last frame + 1
    anim.duration = 0.6;
    anim.repeatCount = 1;
    anim.autoreverses = NO;
    anim.delegate = self;

    [anim setValue:self.sprite forKey:@"parentLayer"];
    [self.sprite addAnimation:anim forKey:@"layerAnimateName"];

动画结束:

- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {

}

最终效果就和UIImageView的帧动画类似。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值