gpt4 book ai didi

ios - 动画完成后是否需要删除 CABasicAnimation?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:58 25 4
gpt4 key购买 nike

我正在为图层设置动画以更改背景颜色:

CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(0, self.view.bounds.size.height, self.view.bounds.size.width, self.view.bounds.size.height);
layer.backgroundColor = [UIColor yellowColor].CGColor;
[self.view.layer insertSublayer:layer atIndex:0];
[CATransaction begin];
CABasicAnimation *animation = [CABasicAnimation animation];
animation.keyPath = @"position.y";
animation.byValue = @(-self.view.bounds.size.height);
animation.duration = 0.4;
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
self.animating=YES;
[CATransaction setCompletionBlock:^{
NSLog(@"finished");
self.view.backgroundColor=[UIColor yellowColor];
[layer removeFromSuperlayer];
self.animating=NO;
}];
[layer addAnimation:animation forKey:@"slide"];
[CATransaction commit];

当我完成后,我设置了 UIView 的实际背景颜色,然后删除了图层。我是否需要在完成 block 中调用类似 [self.view.layer removeAllAnimations]; 的方法来删除动画,还是自动删除?只是考虑内存管理。

最佳答案

没必要

animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;

...如果您从一开始就正确构建动画和图层。整个舞蹈是基于对动画工作原理的古老误解。不幸的是,它仍然经常出现在互联网上,但它是错误的,而且一直都是错误的。最好学会正确地执行此操作(通过在动画开始时将层设置为其最终属性值)。

关于ios - 动画完成后是否需要删除 CABasicAnimation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com