2

2つのテーブルセルの背景色を赤から元の色である白にアニメーション化しようとしています。

次のコードは私が使用しているものです。問題は、それが赤い色を決して示さないということです-それは単に(元の)白から(アニメーション化された)白にアニメートします。つまり、アニメーションブロックの色を変更すると、その色にアニメーション化されます。

[table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]].backgroundColor = [UIColor redColor];
[table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]].backgroundColor = [UIColor redColor];

[UIView animateWithDuration:0.8 delay:0.2 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    [table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]].backgroundColor = [UIColor whiteColor];
    [table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]].backgroundColor = [UIColor whiteColor];
}
completion:^(BOOL finished) {

}];

次のコードは、テーブルの背景に対して期待どおりに機能しますが、それは私が望むものではありません。

table.backgroundColor = [UIColor redColor];

[UIView animateWithDuration:0.8 delay:0.2 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    table.backgroundColor = [UIColor clearColor];
}
completion:^(BOOL finished) {

}];

では、テーブルの背景がアニメーション化されているのに、セルの背景がアニメーション化されないのはなぜですか?

その価値については、この直後にテーブルビューで実行する他のチェーンアニメーションがたくさんありますが、それらのアニメーションをコメントアウトしても、まだこの問題があります。

4

2 に答える 2

0

セルには他のビューが含まれているためです。cell.contentView、、の色を確認する必要がcell.accessoryViewありcell.backgroundViewます。これらがすべてである場合は[UIColor clearColor]、アニメートできますcell.backgroundColor

于 2012-06-11T16:37:48.513 に答える
0

@JasonCocoが正しいようです。私はそれを行うことができません(きれいにそして迅速に):

Appleから:

注:セルの背景色を変更する場合(UIViewで宣言されたbackgroundColorプロパティを使用してセルの背景色を設定することにより)、tableViewではなくデリゲートのtableView:willDisplayCell:forRowAtIndexPath:メソッドで変更する必要があります。 :cellForRowAtIndexPath:データソースの。グループスタイルのテーブルビューのセルの背景色を変更すると、iOS 3.0では、以前のバージョンのオペレーティングシステムとは異なる効果があります。長方形の外側の領域ではなく、角の丸い長方形の内側の領域に影響するようになりました。 参照

したがって、本当に必要な場合は、変数を設定する必要があります。次にreloadData、テーブルなどを呼び出します。

于 2012-06-11T17:40:00.153 に答える