Цель C: Как добавить цвет ко всей ячейке (с индикатором раскрытия) - PullRequest
10 голосов
/ 10 августа 2011

Я пытаюсь добавить цвет фона для своей ячейки, но не смог закрасить участок с помощью индикатора раскрытия (см. Скриншот ниже)

enter image description here

Что я могу сделать, чтобы покрасить всю клетку? Моя реализация выглядит следующим образом.

cell.contentView.backgroundColor = [UIColor colorWithHexString:@"#FFFFCC"];

//Clear colors for labels
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];

Ответы [ 7 ]

12 голосов
/ 10 августа 2011

UITableViewCell подклассы UIView;Вы можете установить его цвет фона так же, как и любой другой вид.Ячейки в табличном представлении «сгруппированного» стиля требуют дополнительной работы, но это не похоже на то, что вы используете это, поэтому:

cell.backgroundColor = [UIColor colorWithHexString:@"#FFFFCC"];
1 голос
/ 10 августа 2011

Мой код использует (в самой ячейке) self.backgroundColor, поэтому вы должны использовать cell.backgroundColor вместо cell.contentView.backgroundColor. ContentView не включает в себя представление индикатора выбора, которое, как вы уже догадались, я думаю;)

Если вы хотите, чтобы он только изменял цвета, если он выбран, используйте selectedBackgroundView.backgroundColor

0 голосов
/ 30 мая 2014

UIImageView

UIImageView с изображением шеврона на правой стороне.Желательно в раскадровке, но этим легко можно управлять в коде, прикрепив его к представлению контента.

0 голосов
/ 24 сентября 2013

Это сводило меня с ума.Я попробовал несколько различных подходов в методе cellForRowAtIndexPath.Наконец-то я нашел способ сделать это - переопределить метод willDisplayCell следующим образом:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row % 2) {
        cell.backgroundColor = [UIColor whiteColor];
    } else {
        cell.backgroundColor = [UIColor colorWithRed:225.0/255.0 green:225.0/255.0 blue:225.0/255.0 alpha:1.0];
    }
}
0 голосов
/ 14 мая 2012

Принятый ответ у меня не сработал, но сработал следующий код:

[cell.contentView setBackgroundColor:[UIColor whiteColor]];

Надеюсь, это кому-нибудь поможет

0 голосов
/ 10 августа 2011

раскрасьте пользовательский интерфейс с теми же границами, что и ячейка, и добавьте его в качестве подпредставления




- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    UIView *colorView = [cell viewWithTag:200];
    if(!colorView){
        colorView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 44)] autorelease];
        colorView.backgroundColor = [UIColor redColor];
        colorView.tag = 200;
        [cell addSubview:colorView];
    }

    return cell;
}


затем добавьте все ваши подпредставления в этот цветной вид.

0 голосов
/ 10 августа 2011

Поскольку это подкласс UIView, вы должны иметь возможность установить цвет фона для accessoryView:

cell.accessoryView.backgroundColor = [UIColor clearColor];

или:

cell.accessoryView.backgroundColor = [UIColor colorWithHexString:@"#FFFFCC"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...