通过setPosition移动CALayer的奇怪行为

时间:2012-06-14 21:27:16

标签: ios calayer gestures

我正在尝试根据Pan手势移动一组CALayers。

我正在使用此代码:

-(void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {
    float newX = 0;  

    for (CALayer *layer in self.layer.sublayers) 
    {        
        [ layer setPosition:CGPointMake(layer.frame.origin.x + 50, layer.frame.origin.y)];
    }
}

但是CALayers正朝着屏幕的一侧移动

我的问题是,我做错了吗?

CALayers不应该以这种方式移动吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

该位置实际上位于中心而不是原点(除非您更改了锚点,但我假设您没有)。

如果你想让图层向右移动50个点,那么你应该将你的位置改为中心+ 50.这样:

[layer setPosition:CGPointMake(layer.position.x + 50, layer.position.y)];

然而...

您永远不会使用平移手势识别器的值,因此对于每个平移事件,您将每层向右移动50个点。如果你的意思是“CALayers正在向屏幕的一侧移动”,那么这就是你做错了。层就像你告诉他们一样移动。