Цвет фона UITableViewCell отличается в iOS5 от iOS4 - PullRequest
5 голосов
/ 28 октября 2011

Сгруппированный UITableViewCell использует цвет tableCellGroupedBackgroundColor вместо обычного whiteColor цвета в iOS 5. В результате фон пользовательских ячеек не совпадает с фоном UITableViewCell (по умолчанию, субтитры,Value1, ячейки стиля Value2).

Какой лучший способ убедиться, что в настраиваемом UITableViewCell и по умолчанию UITableViewCell (и связанных UILabel и других элементах) используется тот же цвет фона - как для iOS4и iOS5?

Примечание: в редакторе я вижу новый цвет по имени tableCellGroupedBackgroundColor, но нет категории / метода, доступных для получения этого цвета программным способом.

Изменить:

Вы можете использовать следующую технику, чтобы изменить цвет фона элементов управления в вашей ячейке, но в случае пользовательских ячеек, как вы можете установить соответствующий цвет фона на основе ОС (iOS 4 противiOS 5)?

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    for (UIView* view in cell.contentView.subviews) {
        view.backgroundColor = cell.backgroundColor;
    }
}

Самое простое решение (моя текущая реализация): Это просто гарантирует, что все мои ячейки имеют белый фон, независимо от ОС.Почему-то мне не нужно применять белый цвет к cell.contentView.subviews.

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

Ответы [ 3 ]

3 голосов
/ 08 ноября 2011

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

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    for (UIView *subview in [cell.contentView subviews]) {
        subview.backgroundColor = cell.backgroundColor;
    }
}

В iOS 5 это может помочь избежатьнеприглядный вид линий.:)

0 голосов
/ 12 мая 2012

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

- (void)setBackgroundColor:(UIColor *)backgroundColor {
    [super setBackgroundColor:backgroundColor];
    [[self myLabel] setBackgroundColor:backgroundColor];
}

Похоже, этот метод используется iOS, когда он устанавливает цвет фона по умолчанию для ячейки.

0 голосов
/ 29 октября 2011

В качестве альтернативы вы можете установить backgroundColor ваших подпредставлений (меток и т. Д.) На [UIColor clearColor]

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