2011-09-05 14 views
0

我有一個蒙版,我已經構建了圖層和圖像。我想用小「跳躍」來移動這個圖層(沒有很好的翻譯動畫)。不想被刪除的圖層上的動畫

問題是,無論何時移動遮罩層的框架都會出現動畫。我試過撥打[maskLayer removeAllAnimations];,但它沒有改變任何東西。

在我的代碼中,我根本沒有放任何動畫,所以我不明白這個動畫是從哪裏來的。

當我啓動此功能:

-(void) moveAlternativeMask:(CALayer*) maskLayer { 
    NSLog (@"moveAlternativeMask %@", NSStringFromCGRect(maskLayer.frame)); 

    // Change the frame of the layer 
    CGRect originalFrame = maskLayer.frame; 
    CGFloat newYPos = maskLayer.frame.origin.y + 5.; 
    maskLayer.frame = CGRectMake (originalFrame.origin.x, newYPos, originalFrame.size.width, originalFrame.size.height); 

    // Try removing all animations on the layer 
    NSLog (@"Animations"); 
    for (NSString* animationKey in maskLayer.animationKeys) { 
     NSLog(@" Animation With Key %@", animationKey); 
    } 
    NSLog (@"End animations"); 
    [maskLayer removeAllAnimations]; 

    NSLog (@"Animations after removing"); 
    for (NSString* animationKey in maskLayer.animationKeys) { 
     NSLog(@" Animation With Key %@", animationKey); 
    } 
    NSLog (@"End animations after removing"); 

    // Launch the animation with a small delay 
    [self performSelector:@selector(moveAlternativeMask:) withObject:maskLayer afterDelay:0.5]; 

} 

我得到這個日誌:

---- moveAlternativeMask {{0,200},{768,643}} ---- 動畫 動畫與關鍵:位置 結束動畫 動畫消除

後去除
結束後的動畫

--- moveAlternati veMask {{0,205},{768,643}} 動畫 動畫與關鍵:位置 結束動畫 動畫除去

之後去除
結束動畫後--- moveAlternativeMask {{0,210}, {768,643}} 動畫 動畫與關鍵:位置 結束動畫 動畫消除

所以該層移動,我想之後,除去
完動畫後,唯一的問題是,「位置」 ANI mation繼續回來......

注意,CALayer的是建立這樣的:

UIImage *maskImage = [UIImage imageNamed:@"masque2.png"]; 
self.maskLayer = [CALayer layer]; 
self.maskLayer.contents = (id) maskImage.CGImage; 
self.maskLayer.frame = CGRectMake(0, ORIGINAL_Y_POSITION, 768, 643); 
[myView.layer setMask:self.maskLayer]; 

回答

1

嗯,很奇怪。我有2個想法:

  1. 是否可以用UIView來代替它?
  2. 你可能試過removeFromSuperviewaddSubview,而不是改變框架?
+0

1-我不知道如何指定不使用圖層的遮罩。你做 ? 2-是的,當我移除前面的遮罩層並在正確的位置創建一個新的遮罩層時,它正在工作。我想這對性能不利,但在iPad上似乎沒有問題。謝謝 – CedricSoubrie