Это интересно ... Я думаю, что, делая этоМожно ли повторно использовать экземпляр 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;
}
Я на самом деле всегда изменение BeginTime того же CABasicAnimation и просто приращение его счетчика ссылок. Таким образом, я не получал бы ряд слоев, замирающих один за другим, а скорее должен был испортить время начала всех из них, возможно, заставляя всех их сразу появляться сразу во время последнего. Но приведенный выше код действительно работает в том, что слои постепенно исчезают.
Так ли имеет смысл повторно использовать анимацию таким образом? Чтобы не создавать новый экземпляр этого на каждом проходе?
Действительно ли addAnimation делает глубокую копию анимации вместо увеличения количества ссылок?
О, хорошо! и я чувствую себя настолько глупо, что просто пропустил, что все это время было в ссылке. Извините за то, что вы «посмотрите на меня». Интересно, однако, что я столкнулся с несколькими случаями в соответствии с моим примером выше, где казалось, что я влиял на другие слои, изменяя одну анимацию. Но теперь ясно, что я, вероятно, испортил что-то еще (возможно, свойство группы). Благодаря! – SaldaVonSchwartz