UITableViewCell
グループ化された
UITableViewCell
は、iOS 5では通常の
whiteColor
カラーの代わりに
tableCellGroupedBackgroundColor
カラーを使用します。その結果、カスタムセルのバックグラウンドは
UITableViewCell
(Default、Subtitle、Value1、Value2スタイルのセル)のバックグラウンドと一致しません。
UITableViewCellの背景色は、iOS5とiOS4では異なります
カスタムUITableViewCell
とデフォルトのUITableViewCell
(および関連付けられているUILabel
などの要素)で同じ背景色が使用されていることを確認する最善の方法 - w.r.t. iOS4とiOS5の両方
注:エディタではtableCellGroupedBackgroundColor
という名前で新しい色を見ることができますが、この色をプログラムで取得するためのカテゴリ/方法はありません。
編集:
次の手法を使用して、セルのコントロールの背景色を変更できますが、カスタムセルの場合、OSに基づいて適切な背景色を設定する方法はありますかiOS 5と比べて)?
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
for (UIView* view in cell.contentView.subviews) {
view.backgroundColor = cell.backgroundColor;
}
}
最も簡単なソリューション(私の現在の実装): これは、OSに関係なく、すべてのセルが白い背景を持つようにします。何とか、私はcell.contentView.subviews
に白い色を適用する必要はありません。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[cell setBackgroundColor:[UIColor whiteColor]];
}
これは、どのビューのバックグラウンドでも透明な色を設定すると、パフォーマンスが低下することはありません。グラデーションの背景が必要ない場合は、背景を不透明に設定する必要があります。これはAppleが推奨するものであり、これも私の経験です... –