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-是的,當我移除前面的遮罩層並在正確的位置創建一個新的遮罩層時,它正在工作。我想這對性能不利,但在iPad上似乎沒有問題。謝謝 – CedricSoubrie