0

我正在尝试根据平移手势移动一组 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 不应该这样移动吗?

谢谢!

4

1 回答 1

1

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

如果您希望图层向右移动 50 个点,那么您应该将位置更改为中心 + 50。像这样:

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

然而...

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

于 2012-06-14T21:33:24.377 回答