使用平移手势移动CALayer时延迟

时间:2013-01-24 09:56:30

标签: ios objective-c uigesturerecognizer calayer

我使用平移手势在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);

1 个答案:

答案 0 :(得分:9)

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

  1. 使用交易
  2. 设置图层操作
  3. 使用事务用CATransaction包装代码

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

    要禁用某些图层操作,您可以将其添加到图层init,即位置动画,例如:

    aLayer.actions = @{@"position":[NSNull null]}; // FIXED property name