我很好奇当我使用 CABasicAnimation
为图层设置动画时会发生什么,所以我在图层的 - (void)drawInContext:(CGContextRef) 中放置了一个
。但行为相当奇怪,它遍历所有值,然后继续记录最后一个或非常接近它的值。NSLog
ctx
CABasicAnimation *animation = [CABasicAnimation animation];
animation.duration = 5.0;
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
animation.delegate = self;
animation.fromValue = [NSNumber numberWithInt:255];
animation.toValue = [NSNumber numberWithInt:0];
这会生成一个带有 NSLog
记录动画值的以下内容。
...
value: 14
value: 13
value: 12
value: 11
value: 10
value: 9
value: 8
value: 7
value: 7
value: 6
value: 5
value: 4
value: 3
value: 3
value: 2
value: 1
value: 0
value: 0
value: 0
value: 0
...
它永远不会停止,它一直在记录 0
。为什么要这样做?这是否意味着当 NSLog
不存在时此方法被调用了那么多次?
最佳答案
你的 animation.removedOnCompletion 没有
还有 必须有人绘制您的图层,所以有时这是可以预料的
关于ios - 我在 drawInContext 中的 NSLog 永远不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24717565/