UILabel тень от ячейки выбранного цвета - PullRequest
9 голосов
/ 09 августа 2010

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

screenshot

Ответы [ 4 ]

16 голосов
/ 22 апреля 2011

Я предпочитаю изменять цвет тени внутри кода TableCell, чтобы не загрязнять делегата. Вы можете переопределить этот метод для обработки:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animate
{
    UIColor * newShadow = highlighted ? [UIColor clearColor] : [UIColor whiteColor];

    nameLabel.shadowColor = newShadow;

    [super setHighlighted:highlighted animated:animate];
}
11 голосов
/ 30 августа 2010

Вы можете изменить цвет тени метки в -tableView:willSelectRowAtIndexPath: в делегате. Например:

-(NSIndexPath*)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.textLabel.shadowColor = [UIColor greenColor];
    return indexPath;
}
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.textLabel.shadowColor = [UIColor redColor];
}
2 голосов
/ 31 октября 2012

У меня была та же проблема, и ни одно из вышеперечисленных решений не помогло мне - я не хотел создавать подкласс UITableViewCell, а также некоторые сложные / выделенные изменения состояния делались программно, что не очень хорошо подходило для решений.выше.

MySolution:

В итоге я использовал секунду UILabel под основным UILabel, чтобы действовать как тень.Для этой «тени» UILabel вы можете установить для «Выделенного цвета» значение «Очистить цвет».

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

Надеюсь, это поможет!

0 голосов
/ 01 июля 2011

Простой ответ, по крайней мере для примера, показанного выше, состоит в том, чтобы не отображать тень в первую очередь.Так как вы все равно не видите белое на белом, установите для shadowColor значение -clearColor.

Если вам действительно нужна тень, переопределение метода -setHighlighted является лучшим решением.Он сохраняет код в ячейке, что, я думаю, лучше, чем пытаться обработать его из табличного представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...