Подтвердить что ты не робот

Изменение цвета фона UITableViewCell textLabel для очистки

В моем приложении у меня есть табличное представление с customViewCells. Я подклассифицировал класс UITableViewCell и добавил изображение, которое будет загружать async, и для текста, который я использую cell.textLabel.text = @"someThext".

Для ячеек цвет фона устанавливается альтернативно [UIColor darkGrayColor] и [UIColor whiteColor].

Когда я запускаю приложение в симуляторе и на телефоне, textLabel ячейки имеет белый фон. Я хочу, чтобы это было ясно, потому что я хочу, чтобы цвет фона ячейки был заполнен не полосой, а затем белой, затем другой полосой.

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

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

Я также попробовал:

self.textLabel.backgroundColor = [UIColor redColor];

Но это тоже не сработало... если я добавлю UILabel в качестве подвью, можно установить фоновый цвет метки, но я не хочу этого делать, потому что когда я поворачиваю телефон, я хочу, чтобы мой ярлыки для автоматического увеличения.

Любые идеи, почему установка цвета фона cell.textLabel не работает?

Спасибо

4b9b3361

Ответ 1

Проблема заключается в том, что UIKit устанавливает цвет фона ячейки в методе -setSelected. У меня был метод, но у меня не было self.textLabel.backgroundColor = [UIColor clearColor]; 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];
}

Ответ 2

Если вы не хотите подкласса UITableViewCell, вы можете просто добавить это:

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

Ответ 3

Похоже, что Apple что-то изменило. Выполнение именно этого в iOS4 работает:

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

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

Приятно, что это исправлено, но немного удивительно во время тестов, если вы разрабатываете базовый SDK 4.1 и мин. развертывание 3.1 для iPhone classic и iPad.

Ответ 4

Чтобы установить четкий цвет фона, вы можете использовать clearColor:

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

Это то, что вы имеете в виду?

Ответ 6

Я не пробовал, но вот догадка... Чтобы быстрее нарисовать непрозрачное свойство метки, по умолчанию может быть установлено значение true.

Попробуйте

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

Если это не сработает, я бы, вероятно, просто отказался на этом этапе и создал свой собственный UILabel для ячейки.

Ответ 7

чтобы установить цвет текстовой метки, вы должны сделать это: t.textColor = [UIColor colorYouWantRGB];