現在、UITableViewControllerに取り組んでいます。UITableViewのセルには、Webサービスからのリアルタイムデータが表示されます。基になるデータ項目の1つが更新されたとき(2分ごとに1回程度)、セルを短時間「フラッシュ」させて、ユーザーがそのセルのデータが更新されたことを理解できるようにします。
今まで、私はこのコードを使用しました:
[UIView animateWithDuration:0.2 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction|UIViewAnimationOptionCurveEaseInOut animations:^
{
cell.contentView.backgroundColor = flashColor;
} completion:^(BOOL finished)
{
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction|UIViewAnimationOptionCurveEaseInOut animations:^
{
cell.contentView.backgroundColor = [UIColor clearColor];
} completion: NULL];
}];
これは、ユーザーが特定のセルのデータを「内部を見る」方法を提供し、開示インジケーターを追加するまで、うまく機能しました。コンテンツ領域はフレームワークによって縮小されてディスクロージャーインジケーター用のスペースが確保されるため、フラッシュはセルの左側の90%のみを強調表示しますが、ディスクロージャーインジケーターの背景色は変更されません。
cell.accessoryView.backgroundColor = flashColor;
と
cell.backgroundView.backgroundColor = flashColor;
アニメーションの修正には役立ちません。
について読んだ- (void) setHighlighted: (BOOL)highlighted animated: (BOOL)animated
ことがありますが、フラッシュが飛散しないようにする厄介なエラーが発生しやすいコードを大量に記述しない限り、フラッシュの直後に強調表示された状態に戻ることはありません。また、アニメーション自体を制御することはできません。
アクセサリビューが存在する状態で古いアニメーション効果を維持する方法はありますか、それともハイライト方法を使用してフラッシュを開始する必要がありますか?
よろしく、クリス