анимация нескольких CALayers, но не в том же пространстве времени

Надеюсь, это поможет.

UIView.setAnimationsEnabled(false)
self.tableView.beginUpdates()

self.tableView.insertRows(at: indexPathsToBeInserted, with: UITableViewRowAnimation.none)

self.tableView.endUpdates()
UIView.setAnimationsEnabled(true)
9
задан Chris Hanson 19 February 2009 в 06:48
поделиться

2 ответа

Я все еще хотел бы услышать предложения других, но я думаю, что решил это.

Я теперь создаю конкретный CAAnimation объекты и определение их beginTime свойство. Я делал это ранее, и это не работало, что я наконец понял, это для beginTime свойство, которое будет почетно анимация, должно быть добавлено к CAAnimationGroup.

Так, мой код похож на это:

NSArray *layers = /* layers to be animated away */
CGFloat startOffset = 0.01;

for (NSInteger index = 0; index < layers.count; index++) {
    CALayer *layer = [layers objectAtIndex:index];

    CABasicAnimation *zoomOut = [CABasicAnimation animationWithKeyPath:@"zPosition"];
    zoomOut.toValue = [NSNumber numberWithDouble:400.0];
    zoomOut.beginTime = index * startOffset;

    CAAnimationGroup *group = [CAAnimationGroup animation];
    group.animations = [NSArray arrayWithObject:zoomOut];
    group.delegate = self;

    [layer addAnimation:group forKey:@"zoomAway"];
}
17
ответ дан 4 December 2019 в 06:30
поделиться

Спасибо, что поделились своими результатами, я также обнаружил, что свойство BeginTime не работает, если используется без группы.

В моем случае некоторые параметры, такие как BeginTime и Duration, игнорировались, если устанавливались на CABasicAnimation, но работали, если устанавливались непосредственно CAAnimationGroup.

0
ответ дан 4 December 2019 в 06:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: