CALayer addAnimation:forKey: анимирует каждое свойство, установленное ранее
Итак, я получил CALayer из экземпляра UITableView. Сначала я хочу установить пару свойств, таких как backgroundColor. После этого я добавляю анимацию, которая должна сделать перезагрузку (-reloadData) более привлекательной. Тем не менее, CATransition, который я добавляю, также анимирует backgroundColor, который я установил ранее. Я предполагаю, что мне здесь не хватает чего-то реального, но я действительно не понимаю, что.
Вот мой код:
self.superview.backgroundColor = [UIColor greenColor];
self.backgroundColor = nil;
self.backgroundView.backgroundColor = nil;
Я хочу, чтобы UITableView сразу стал зеленым.
Вот переход:
CATransition* swapAnimation = [CATransition animation];
swapAnimation.type = kCATransitionPush;
swapAnimation.subtype = kCATransitionTypeFromUITableViewRowAnimation(animation);
swapAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
swapAnimation.fillMode = kCAFillModeBoth;
swapAnimation.duration = 5.0f;
swapAnimation.removedOnCompletion = YES;
[self.layer addAnimation:swapAnimation forKey:@"UITableViewReloadDataAnimationKey"];
Когда я запускаю это, UITableView сохраняет свой первоначальный backgroundColor, зеленый (который фактически сияет через теперь прозрачный UITableView) скользит сверху / снизу с ячейками. Это код из категории, объясняющий вызовы self.layer.
1 ответ
Похоже, вам нужно обернуть установщик цвета фона в явном CATransaction
потому что он не сбрасывается до тех пор, пока вы не добавите анимацию.
Вот так:
[CATransaction begin];
// set background
[CATransaction flush];
[CATransaction commit];