移动CALayer(添加动画)

9

我有一个 CALayer layer,我想用 CADisplaylink 移动它。例如:

layer.center=CGPointMake(layer.center.x + 10, layer.center.y + 10);

但是我不能使用centerposition来控制该层。这是我的问题,我想让它像uiimageview一样移动。


为什么不能使用center或position?直接改变frame不就好了吗? - progrmr
1个回答

14

要移动图层,请尝试使用这种方法。

-(void)moveLayer:(CALayer*)layer to:(CGPoint)point{
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
    animation.fromValue = [layer valueForKey:@"position"];
    animation.toValue = [NSValue valueWithCGPoint:point];
    layer.position = point;
    [layer addAnimation:animation forKey:@"position"];
}

但是使用这种方法无法检测碰撞。因为之后我想让图层发生碰撞 :/ - jean bernard
1
@jeanbernard 不,仍然完全可以检测屏幕上任何其他对象的碰撞 - 看看CALayer.presentationLayer。 - Till
很难理解如何检测CABasicAnimation的碰撞,你能否更详细地解释一下CALayer.presentationLayer是什么。 - jean bernard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接