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.


person lbrndnr    schedule 06.11.2012    source источник


Ответы (1)


Похоже, вам нужно обернуть установщик цвета фона в явное CATransaction, потому что он не сбрасывается до тех пор, пока вы не добавите анимацию.

Вот так:

[CATransaction begin];
// set background
[CATransaction flush];
[CATransaction commit];
person sudo rm -rf    schedule 07.11.2012