2

tableView の背景色を設定すると、個々のセルに設定した背景色が上書きされるという問題があります。より具体的には、3 行のテーブルがあります。上のセルは濃い灰色で、下の 2 つのセルは赤です。

http://imgur.com/otYlFMx,LvoLDzY,tXiJenw#0

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIColor *sectionBackgroundColor = [UIColor colorWithRed:0.09f green:0.09f blue:0.09f alpha:1.0];
    UIColor *menuItemBackgroundColor = [UIColor redColor];

    if (indexPath.row == 0) {
        cell.backgroundColor = sectionBackgroundColor;
        cell.textLabel.textColor = [UIColor whiteColor];
        cell.textLabel.text = @"MENU";
        cell.textLabel.font= [UIFont systemFontOfSize:16.0];
        cell.selectionStyle = false;
    } else if (indexPath.row == 1) {
        cell.backgroundColor = menuItemBackgroundColor;
        cell.textLabel.textColor = [UIColor whiteColor];
        cell.textLabel.text = @"Schedule";
        cell.textLabel.font= [UIFont systemFontOfSize:18.0];
        cell.imageView.image = [UIImage imageNamed:@"Schedule.png"];
    } else if (indexPath.row == 2) {
        cell.backgroundColor = menuItemBackgroundColor;
        cell.textLabel.textColor = [UIColor whiteColor];
        cell.textLabel.text = @"Contacts";
        cell.textLabel.font= [UIFont systemFontOfSize:18.0];
        cell.imageView.image = [UIImage imageNamed:@"Contacts.png"];
    } else {
        cell.backgroundColor = [UIColor blackColor];
        cell.selectionStyle = false;
    }

}

私がやろうとしているのは、一番下の空の未使用の白いセルをすべて黒くすることです。私の調査に基づいて、tableView の背景色を設定すると、次のようになります。

http://imgur.com/otYlFMx,LvoLDzY,tXiJenw#1

tableView.backgroundColor = [UIColor blackColor];

ただし、お気づきのように、このコード行は、上部の 2 つのセルの背景色も黒に変更します。私はこれをもっといじって、最後のものを除いてすべてのセルの背景色が黒に変更される一般的なパターンに気付きました:

(上記リンクの3枚目の画像参照)

ここで何が起こっているかについてのアイデアはありますか? 助けていただければ幸いです!



私がすでに試したいくつかのことは機能しません(リンクをさらに提供しますが、現在の担当者は許可していません):

A) セル内のビューを不透明にする。セル内のさまざまなビューの色を変更します。

cell.opaque = YES;
cell.backgroundView.opaque = YES;
cell.contentView.opaque = YES;
cell.backgroundColor = menuItemBackgroundColor;
cell.contentView.backgroundColor = menuItemBackgroundColor;
cell.backgroundView.backgroundColor = menuItemBackgroundColor;

B) tableView nil の backgroundView を設定します。

tableView.backgroundView = nil;

C) tableView の backgroundView の背景色を設定する。

tableView.backgroundView.backgroundColor = [UIColor blackColor];
4

2 に答える 2

4

tableView の背景色を設定すると、個々のセルに設定した背景色が上書きされます

そのとおりです。迷惑ですね。:) 問題は、セルに色を付ける (思ったbackgroundViewよりもはるかに簡単です) か、 になるまで待って、そこにセルtableView:willDisplayCell:forRowAtIndexPath:の を設定することです。backgroundColor

于 2013-03-29T22:39:20.200 に答える