Мне нужно изменить выбранный цвет фона ячейки для всех ячеек в моем приложении. Как я знаю, есть способ использовать протокол UIAppearance
для этих целей. Можно ли это реализовать по категории для UITableViewCell
?
Измените выбранный цвет фона ячейки с помощью UIAppearance
Ответ 1
Вы не можете сделать это прямо в UITableViewCell, но вы можете сделать это для своего contentView
:
[[UIView appearanceWhenContainedIn:[UITableViewCell class], nil] setBackgroundColor:[UIColor redColor]];
Обратите внимание, что он изменит весь цвет подэлементов bg.
Другой вариант заключается в написании категории или подкласса UITableViewCell
с меткой UI_APPEARANCE_SELECTOR
, проверьте этот вопрос:
iOS: использование UIAppearance для определения пользовательского цвета UITableViewCell
Ответ 2
Используя внешний прокси-сервер, вы можете покрасить все ячейки. Не знаю, можете ли вы настроить таргетинг на определенную категорию.
Чтобы сделать раскраску, введите следующий код в файл AppDelegate.m:
Положите [self customCellBackground];
в - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions
и где-то в конце:
- (void)customCellBackground {
UIView *cellBackgroundView =[[UIView alloc] init];
cellBackgroundView.backgroundColor = [UIColor blackColor];
[[UITableViewCell appearance] setSelectedBackgroundView:cellBackgroundView];}
Ответ 3
Как null ответ не для выбранных фонов и Armands L. answer не работал последовательно для меня (выбор ячеек по "user-tap" действительно работал, но выбор программных ячеек показывал странные результаты (например, иногда выбранный фон не был виден или не заполнялся высота ячейки правильно...).
Я нашел собственное решение, которое сработало:
- Подкласс
UITableViewCell
- Инициализировать
self.selectedBackgroundView
вinit
и - Добавить пользовательское свойство
UIColor
сUI_APPEARANCE_SELECTOR
для пользовательского выбранного цвета фона
.h
файл:
@property (nonatomic) UIColor* selectedCellBackgroundColor UI_APPEARANCE_SELECTOR;
.m
файл:
в init
методе (-ях):
self.selectedBackgroundView = [[UIView alloc] init];
и последнее, но не менее важное значение для функции setter для цвета:
- (void) setSelectedCellBackgroundColor:(UIColor*) color {
_selectedCellBackgroundColor = color;
self.selectedBackgroundView.backgroundColor = color;
}