Code Bye

CABasicAnimation能在动画结束前让动画结束吗?

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.title=@"test";
    CALayer *layer = [[CALayer alloc] init];
    layer.frame = CGRectMake(100,100,100,100);
    UIImage *iconImage =[UIImage imageNamed:@"Icon57"];
    layer.contents = (id)iconImage.CGImage;
    layer.contentsScale = iconImage.scale;
    
     [layer addAnimation:[ViewController moveY:30 Y:[NSNumber numberWithFloat:500.0f]] forKey:@"slideAnimation"];
    [self.view.layer addSublayer:layer];
}
+(CABasicAnimation *)moveY:(float)time Y:(NSNumber *)y
{
    CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
    animation.toValue=y;
    animation.duration=time;
    animation.removedOnCompletion=NO;
    animation.fillMode=kCAFillModeForwards;
    return animation;
}

上面代码的效果是图片在30秒,y坐标移动到了500.本人的问题是,能不能在30秒内,通过一个按钮结束动画?或有没其他的方法来提前结束动画或修改动画的时间,求帮助

解决方案:40分
动画是由时间控制的,你只要控制动画的速度和时间就可以任意控制动画的状态,要暂停动画的话只要获取当前动画执行的便宜时间就行了
CFTimeInterval currTimeoffset = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = currTimeoffset;

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明CABasicAnimation能在动画结束前让动画结束吗?