2013-01-24 45 views
5

我使用平移手勢移動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); 
+0

你能找到一個拖延的例子,在另一個應用程序沒有一個小的延遲?通常有一些延遲。 – occulus

+0

@occulus你確定沒有辦法讓它變得更好嗎?我也嘗試過UIView的子類,並通過覆蓋touchesMoved方法來移動圖層,但它具有相同的效果,這對我來說有點奇怪。 –

回答

9

我想你看到隱含動畫層的結果。如果這樣的話有兩個選項來禁用此動畫:

  1. 使用交易
  2. 集層的行動

要使用事務與CATransaction包裝你的代碼

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

要禁用一些圖層操作可以將其添加到圖層init,位置動畫例如:

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

我認爲你的意思是「隱式動畫」。另外,說'[CATransaction setDisableActions:YES]'更短。 –

+1

另外,它應該是'aLayer.actions = ...'。屬性名稱是「actions」,而不是「action」。 –

+0

@robmayoff你是絕對正確的 – voromax