web-dev-qa-db-ja.com

UITableViewCelltextLabelの背景色をクリアに変更

私のアプリには、customViewCellsを使用したテーブルビューがあります。 UITableViewCellクラスをサブクラス化し、非同期をロードする画像を追加しました。テキストにはcell.textLabel.text = @"someThext"を使用します。

セルの場合、背景色は[UIColor darkGrayColor][UIColor whiteColor]に交互に設定されます。

シミュレーターと電話でアプリを実行すると、セルのtextLabelの背景が白になります。セルの背景色をストリップではなく、白、次に別のストリップでいっぱいにしたいので、クリアに設定したいと思います。

追加したカスタムセルのinitメソッドで、白が赤に変わることを期待していますが、効果はありません。

[self.textLabel setBackgroundColor:[UIColor redColor]];

私も試しました:

self.textLabel.backgroundColor = [UIColor redColor];

しかし、これも機能しませんでした...サブビューとしてUILabelを追加すると、ラベルの背景色を設定できますが、電話を回転させるときにラベルを自動化するため、これは行いません。拡大します。

cell.textLabelの背景色の設定が機能しない理由はありますか?

ありがとうございました

23
Sorin Antohi

問題は、UIKitが-setSelectedメソッドでセルの背景色を設定することです。メソッドはありましたが、self.textLabel.backgroundColor = [UIColorclearColor]がありませんでした。 self.detailTextLabel.backgroundColor = [UIColor clearColor];その中にそれらを追加し、写真に記載されている問題を修正しました。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    self.textLabel.backgroundColor = [UIColor clearColor];
    self.detailTextLabel.backgroundColor = [UIColor clearColor];
}
23
Sorin Antohi

UITableViewCellをサブクラス化したくない場合は、次を追加するだけです。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
     [[cell textLabel] setBackgroundColor:[UIColor clearColor]];
     [[cell detailTextLabel] setBackgroundColor:[UIColor clearColor]];
}
48
plug-in

Appleここで何かを変更したようです。iOS4でこれを正確に行うと、次のようになります。

self.textLabel.backgroundColor = [UIColor xxxColor];
self.detailTextLabel.backgroundColor = [UIColor xxxColor];

少なくとも、ラベルの背景が透明になるか、背景色になるまで。それでも、独自の背景色を設定することはできません。

これが修正されたことは素晴らしいことですが、ベースSDK 4.1と最小で開発した場合、テスト中に少し驚くべきことです。 iPhoneclassicおよびiPad用のデプロイメント3.1。

3
Gerd

この投稿を参照してください: ITableViewCellSelectionStyleプロパティをカスタムカラーに設定するにはどうすればよいですか?

あなたの場合は、白い背景色のUIViewを使用してください

0
Nir Levy

私はそれを試しませんでしたが、ここに推測があります...より速く描画するために、ラベルの不透明なプロパティがデフォルトでtrueに設定されている場合があります。

試してみてください

cell.titleLabel.opaque = NO;
cell.titleLabel.backgroundColor = [UIColor clearColor];

それでもうまくいかない場合は、おそらくこの時点で諦めて、セル用に独自のUILabelを作成します。

0
Ron Srebro

テキストラベルの色を設定するには、次のようにする必要があります。t.textColor= [UIColor colorYouWantRGB];

0
amelie

クリアな背景色を設定するには、clearColorを使用できます。

    [[cell textLabel] setBackgroundColor:[UIColor clearColor]];

これはどういう意味ですか?

0
Benji Barash