所以,我从 UITableView 实例中得到了一个 CALayer。我首先想设置几个属性,例如 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 保持其原始背景颜色,绿色(实际上通过现在透明的 UITableView 发光)从顶部/底部与单元格一起滑入。这是一个解释 self.layer 调用的类别的代码。