1
我想利用CALayer提供的隱式動畫,但似乎無法使其工作。在我的視圖控制器中,我聲明瞭一個實例變量CALayer * testLayer。我用這個代碼實例化testLayer。調用removeFromSuperlayer時沒有隱式動畫
- (void)viewDidLoad {
testLayer = [[CALayer alloc] init];
testLayer.bounds = CGRectMake(0, 0, 100, 100);
testLayer.position = CGPointMake(400, 400);
[testLayer setBackgroundColor:[UIColor redColor].CGColor];
testLayer.delegate = self;
[self.view.layer addSublayer:testLayer];
[testLayer release];
}
然後在touchesBegan,我從它的超級層中刪除圖層。
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[testLayer removeFromSuperlayer];
}
該圖層即時消失,沒有任何動畫。我如何啓用此CALayer的隱式動畫?
感謝您的回覆。我嘗試着實現代碼,但是我仍然得到相同的結果。我在一個使用基於視圖的應用程序模板的新項目中僅使用了與此圖層相關的代碼。 – 2011-04-10 21:06:29
但是,如果我更改圖層的位置或不透明度,那麼這些更改會變爲動畫。只有removeFromSuperLayer不起作用。 – 2011-04-10 21:12:44
我認爲在這種情況下你將不得不使動畫不透明。我知道你可以從其超級視圖中移除一個視圖的動畫,但顯然你不能動畫從其超級圖層中移除一個圖層。您可以觀看完成的動畫(-animationDidStop:完成:),然後在該位置實際從其父級移除圖層。或者你可以作弊,只需要調用-performSelector:withObject:afterDelay:傳遞一個延遲值,比你的動畫時間稍長。 – 2011-04-12 01:39:44