Я добавил тень текста в ячейки в моем UITableView, чтобы придать им протравленный вид:
cell.textLabel.textColor = [UIColor colorWithWhite:0.2 alpha:1.000];
cell.textLabel.shadowColor = [UIColor whiteColor];
cell.textLabel.shadowOffset = CGSizeMake(0, 1);
Поскольку цвет тени на самом деле белый, когда строка выбирается и становится синей, белая тень становится действительно видимой и делает текст уродливым.
Кто-нибудь знает, как я могу удалить тень до того, как будет применен стиль выбора ячейки по умолчанию?
Я пробовал:
- Используя
-tableView:willSelectRowAtIndexPath:
, чтобы отменить тень с помощьюcell.textLabel.shadowColor = nil
, но это не работает вовремя - тень отключается только после применения синего стиля выбора. - Проверка
cell.selected
вtableView:cellForRowAtIndexPath:
перед установкой тени, но это, очевидно, не работает, поскольку ячейка не перерисовывается после выделения.
Я также попытался переопределить метод делегата -tableView:willDisplayCell:forRowAtIndexPath:
, как предложил Кевин ниже. Из введенных в журнал операторов этот метод делегата вызывается только до того, как ячейка будет нарисована - к моменту касания ячейки уже слишком поздно. Это код, который я использовал
(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"in willDisplayCell");
if (cell.highlighted || cell.selected) {
NSLog(@"drawing highlighed or selected cell");
cell.textLabel.shadowColor = nil;
} else {
cell.textLabel.shadowColor = [UIColor whiteColor];
}
}