Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 通过设置位置移动CALayer的奇怪行为_Ios_Calayer_Gestures - Fatal编程技术网

Ios 通过设置位置移动CALayer的奇怪行为

Ios 通过设置位置移动CALayer的奇怪行为,ios,calayer,gestures,Ios,Calayer,Gestures,我正试图根据平移手势移动一组Calayer 我正在使用以下代码: -(void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { float newX = 0; for (CALayer *layer in self.layer.sublayers) { [ layer setPosition:CGPointMake(layer.frame.origin.x + 50, lay

我正试图根据平移手势移动一组Calayer

我正在使用以下代码:

-(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不应该这样移动吗


谢谢

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

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

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

然而。。。
您从未使用平移手势识别器的值,因此对于每个平移事件,您都会将每个层向右移动50个点。如果这就是你所说的“CALayers正在向屏幕一侧移动”,那么这就是你做错的地方。图层正在移动,就像您告诉他们的那样。

您希望它们如何移动?您正在为每个平移事件增加x值,因此它们显然将向右移动。(除非它们很小,并且原点.x+50小于位置.x,在这种情况下,它们将始终向右移动)更改layer.frame.origin.x以获得layer.position.x。谢谢