Изменение цвета фона UITableViewCell textLabel на чистый
-
18-09-2019 - |
Вопрос
В моем приложении у меня есть табличное представление с помощью 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
не работает?
Спасибо
Решение 2
Проблема в том, что UIKit устанавливает цвет фона ячейки в методе -setSelected .У меня был метод, но не было self.textLabel.backgroundColor = [UIColor clearColor];self.detailTextLabel.backgroundColor = [UIColor Чистый цвет];таким образом, я добавил их, и проблема, упомянутая на картинке, была исправлена.
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
self.textLabel.backgroundColor = [UIColor clearColor];
self.detailTextLabel.backgroundColor = [UIColor clearColor];
}
Другие советы
Если вы не хотите создавать подкласс UITableViewCell, вы можете просто добавить это:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[[cell textLabel] setBackgroundColor:[UIColor clearColor]];
[[cell detailTextLabel] setBackgroundColor:[UIColor clearColor]];
}
Похоже, Apple что-то здесь изменила.Выполнение именно этого в iOS4 работает:
self.textLabel.backgroundColor = [UIColor xxxColor];
self.detailTextLabel.backgroundColor = [UIColor xxxColor];
По крайней мере, до того момента, пока фон метки не станет прозрачным или не примет цвет фона.По-прежнему невозможно установить собственный цвет фона.
Приятно, что это исправлено, но немного удивительно во время тестов, если вы разрабатываете с базовым SDK 4.1 и min.развертывание 3.1 для iPhone classic и iPad.
Чтобы установить четкий цвет фона, вы можете использовать clearColor:
[[cell textLabel] setBackgroundColor:[UIColor clearColor]];
Это то, что ты имеешь в виду?
смотрите этот пост: Как мне присвоить свойству UITableViewCellSelectionStyle некоторый пользовательский цвет?
в вашем случае просто используйте UIView с белым цветом фона
Я не пробовал, но вот предположение...Чтобы быстрее рисовать, свойству непрозрачности метки по умолчанию может быть присвоено значение true.
Попробуй
cell.titleLabel.opaque = NO;
cell.titleLabel.backgroundColor = [UIColor clearColor];
Если это тоже не сработает, я бы, вероятно, просто сдался на этом этапе и создал свою собственную UILabel для ячейки.
чтобы установить цвет текстовой метки, вы должны сделать это:t.textColor = [UIColor цветыYouWantRGB];