Надеюсь, это поможет.
UIView.setAnimationsEnabled(false)
self.tableView.beginUpdates()
self.tableView.insertRows(at: indexPathsToBeInserted, with: UITableViewRowAnimation.none)
self.tableView.endUpdates()
UIView.setAnimationsEnabled(true)
Я все еще хотел бы услышать предложения других, но я думаю, что решил это.
Я теперь создаю конкретный 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"];
}
Спасибо, что поделились своими результатами, я также обнаружил, что свойство BeginTime не работает, если используется без группы.
В моем случае некоторые параметры, такие как BeginTime и Duration, игнорировались, если устанавливались на CABasicAnimation, но работали, если устанавливались непосредственно CAAnimationGroup.