5

我使用平移手势在 CALayer 中移动图像。我遇到的问题是图像的移动似乎有一点延迟,并且没有出现“卡住”我的手指。

这是我如何移动图层的实际片段(facePic 是 CALayer):

CGPoint translation =[touche locationInView:self.view];
self.facePic.frame =
CGRectMake(translation.x - self.facePic.frame.size.width/2,
           translation.y - self.facePic.frame.size.height/2,
           self.facePic.frame.size.width,
           self.facePic.frame.size.height);
4

1 回答 1

11

我认为您会看到图层隐式动画的结果。如果是这样,那么有两个选项可以禁用此动画:

  1. 使用事务
  2. 设置图层动作

要使用事务,请使用 CATransaction 包装您的代码

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
 . . .
[CATransaction commit];

要禁用某些图层动作,您可以将其添加到图层初始化中,例如位置动画:

aLayer.actions = @{@"position":[NSNull null]}; // FIXED property name
于 2013-02-17T00:06:38.540 回答