我可以动画移动这样的图层:
CABasicAnimation *animation = [CABasicAnimation animation];
[animation setFromValue:[NSValue valueWithCGPoint:self.layer.position]];
[animation setToValue:[NSValue valueWithCGPoint:CGPointMake(100, 100)]];
[self.layer addAnimation:animation forKey:@"position"];
self.layer.position = CGPointMake(100, 100);
但是,我必须在动画结束后设置layer.position,有没有办法在使用显式动画时自动设置?
答案 0 :(得分:0)
根据Apple文档,您必须手动设置:
CABasicAnimation* fadeAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeAnim.fromValue = [NSNumber numberWithFloat:1.0];
fadeAnim.toValue = [NSNumber numberWithFloat:0.0];
fadeAnim.duration = 1.0;
[theLayer addAnimation:fadeAnim forKey:@"opacity"];
// Change the actual data value in the layer to the final value.
theLayer.opacity = 0.0;
与更新图层对象的数据值的隐式动画不同,显式动画不会修改图层树中的数据。显式动画仅生成动画。在动画结束时,Core Animation从图层中移除动画对象,并使用其当前数据值重绘图层。如果希望显式动画的更改是永久性的,则还必须更新图层的属性,如上例所示。