Ios 通过设置位置移动CALayer的奇怪行为
我正试图根据平移手势移动一组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
-(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。谢谢