Изменение цвета фона UILabel в UITableViewCell - PullRequest
11 голосов
/ 21 октября 2008

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

UILabel* label = (UILabel*)[cell.contentView.subviews objectAtIndex:0];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor darkGrayColor];
label.opaque = YES;

Ответы [ 4 ]

8 голосов
/ 21 октября 2008

Ваш фрагмент кода работает нормально для меня, но это должно быть сделано после того, как ячейка была добавлена ​​в таблицу и показана, я полагаю. Если вызывается из initWithFrame:reuseIdentifier:, вы получите исключение, так как UILabel подпредставление еще не создано.

Вероятно, лучшее решение - добавить свой собственный UILabel, настроенный в соответствии со своими стандартами, а не полагаться на этот (очень шаткий) путь к встроенному.

5 голосов
/ 07 ноября 2010

Это не работает, потому что UITableViewCell устанавливает метку backgroundColors в методе layoutSubviews.

Если вы хотите изменить цвет встроенного textLabel или detailTextLabel, создайте подкласс UITableViewCell и переопределите layoutSubviews. Вызовите супер реализацию, ТО затем измените свойство backgroundColor на то, что вы хотите.

- (void) layoutSubviews
{   
     [super layoutSubviews];

     self.textLabel.backgroundColor = [UIColor redColor];
}
2 голосов
/ 22 октября 2008

Добавляйте свою собственную метку в contentView при выделении ячейки, а не полагайтесь на извлечение встроенной ячейки. Тогда вы можете контролировать все значения:

UILabel* label = [[[UILabel alloc] init] autorelease];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor darkGrayColor];
label.opaque = YES;
[cell.contentView addSubview:label];
0 голосов
/ 06 сентября 2012
for (UIView *views in views.subviews)
{
    UILabel* temp = (UILabel*)[views.subviews objectAtIndex:0];
    temp.textColor = [UIColor whiteColor];        
    temp.shadowColor = [UIColor blackColor];
    temp.shadowOffset = CGSizeMake(0.0f, -1.0f);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...