2011-10-11 8 views
9

UITableViewCellをグループ化し、UILabelsを2つ並べています。 UITableViewCellの背景色は純粋な白だったので、UILabelsのデフォルトの背景色と一致していたので、UILabelボックスは表示されませんでした。iOSのバージョン(4.0から5.0)によって異なるセルのbgの色

iOS 5.0にアップデートした後、 UITableViewCellsは、より灰色がかった白です(実際には#f7f7f7です)。その結果、UILabelsのフレームは醜い方法で見えます。

UILabelsの背景色を設定する最も良い方法は何ですか? iOSのバージョンによって異なりますか?私はopaque = NOと[UIColor clearColor]を使うことができますが、パフォーマンス上の理由からUILabelsの背景をペイントしたいと思います。それは多くの理由のために推奨されますが

[[UIDevice currentDevice] systemVersion] 

を、と私はそれがあなたの問題を解決する最善の方法だとよく分からない:

+0

を面白いことは、私はこれを再現することができないということです。私は非常にシンプルなグループ化されたUITableViewを作成し、セルの背景はiOS 4とiOS 5(シミュレータ上)で同じ灰色の色です。 – matt

答えて

4

デリゲートメソッドtableView:willDisplayCell:では、UITableViewCellの背景色は、白またはiOS 5では、灰色がかった色に設定されます。

すべてのサブビューのbackgroundColorをすべて変更することができます。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    for (UIView* view in cell.contentView.subviews) { 
     view.backgroundColor = cell.backgroundColor; 
    } 
} 
1

あなたが呼び出すことができます。原則として、ビューコードを展開して、他の手段で必要な一貫した結果を得ることができるはずです。あなたが実際にデバイスのバージョンを比較したい場合は

、あなたはおそらくプロパティを設定し、ビューコントローラの負荷が、あなたのcellForRowAtIndexPath内とは対照的に、デバイスのOSをご確認ください...

1

私が設定した何をしたかと思いますセルの背景色をwilldisplaycellの[UIColor whiteColor]に設定します。

このようにして、どのように見えるかを制御します。

3

私はちょうどクリアするラベルの背景色を設定し、それは私のためにそれを固定し、iOS4をしてiOS5をグループ化して機能テーブルビューで私のカスタムUITableViewCellの中でその問題を見ました。その問題が去った後

[nameLabel setBackgroundColor:[UIColor clearColor]]; 

:私はUILabelは、以下のように作成されるカスタムセルのコードでこれを設定します。

4

gcampの答えと間違って何もしていますが、iOS4をしてiOS5を両方に白い背景を維持することを好むだろう場合は、ちょうどこの操作を行います。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [cell setBackgroundColor:[UIColor whiteColor]]; 
} 
関連する問題