0

したがって、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は元のbackgroundColorを保持し、緑(現在は透明なUITableViewを通して実際に輝いています)がセルとともに上/下からスライドします。これは、self.layer呼び出しを説明するカテゴリのコードです。

4

1 に答える 1

2

CATransactionアニメーションを追加するまでフラッシュされないため、背景色のセッターを明示的にラップする必要があるようです。

そのようです:

[CATransaction begin];
// set background
[CATransaction flush];
[CATransaction commit];
于 2012-11-07T06:54:43.960 に答える