2013-01-24 13 views
5

私はパンジェスチャーを使ってCALayerで画像を移動します。私が経験する問題は、画像が少し遅れて動いて見えて、指に「ついた」ように見えないということです。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); 
+0

小さな遅延がない別のアプリでドラッグの例を見つけることができますか?通常、いくらか遅延があります。 – occulus

+0

@occulusあなたはそれをより良くする方法がないと確信していますか? UIViewのサブクラス化とtouchesMovedメソッドをオーバーライドすることによってレイヤーを移動しようとしましたが、それは私にとってちょっと奇妙なのと同じ効果がありました。 –

答えて

9

私はあなたが層の暗黙のアニメーションの結果を見ると思う:

ここで私はレイヤーを移動する方法の実際のスニペットは(facePicがCALayerのである)です。

  1. 使用取引
  2. セット層アクション

一部を無効にするにはCATransaction

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

でコードをラップするトランザクションを使用するには:もしそうなら、このアニメーションを無効にするには2つのオプションがありますレイヤーのアクションをレイヤーのinitに追加することができます。例えば、位置アニメーションは

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

「暗黙のアニメーション」を意味すると思います。また、 '[CATransaction setDisableActions:YES]'といっても意味がありません。 –

+1

また、 'aLayer.actions = ...'でなければなりません。プロパティ名は 'action'ではなく' actions'です。 –

+0

@robmayoffあなたは絶対に正しいです – voromax

関連する問題