4
這很有趣......我認爲,通過這樣可以在將CAAnimation實例添加到圖層後進行修改來重用CAAnimation實例嗎?
CABasicAnimation* a = [CABasicAnimation animationWithKeyPath:@"opacity"];
a.fromValue = [NSNumber numberWithFloat:0.];
a.toValue = [NSNumber numberWithFloat:1.];
a.duration = .4;
a.fillMode = kCAFillModeBoth;
a.removedOnCompletion = NO;
CGFloat timeOffset = 0;
for(CALayer* layer in layers)
{
a.beginTime = [someCommonSuperView.layer convertTime:CACurrentMediaTime()fromLayer:nil] + timeOffset;
[layer addAnimation:a forKey:nil];
timeOffset += .4;
}
我其實一直修改同一CABasicAnimation的BEGINTIME,只是增加它的引用計數。所以我不會讓一系列的圖層逐漸消失,而是應該搞亂所有圖層的開始時間,可能會導致所有圖層在最後一個圖層時立即出現。但上面的代碼實際上似乎工作在層順序淡入。
那麼以這種方式重用動畫是否合理?爲了不在每次傳遞中創建它的新實例?
AddAnimation實際上是製作動畫的深層副本,而不是增加引用計數?
噢,真好!我感到非常愚蠢,我只是錯過了它在這裏一直在參考。很抱歉讓你「爲我查找」。有趣的是,我已經遇到了上面示例中的幾個案例,它們似乎通過修改單個動畫來影響其他圖層。但現在很明顯,我可能搞亂了其他一些東西(可能是一個團體的財產)。謝謝! – SaldaVonSchwartz 2012-04-24 23:50:44