Различный цвет ячейки в зависимости от версии iOS (от 4.0 до 5.0) - PullRequest
9 голосов
/ 12 октября 2011

У меня есть пользовательский сгруппированный UITableViewCell с парой UILabels на нем.Так как цвет фона UITableViewCell раньше был чисто белым, он соответствовал цвету фона по умолчанию UILabels, поэтому поле UILabel не было видно ..

После обновления до iOS 5.0 я заметил, что теперь цвет фона по умолчаниюдля сгруппированных UITableViewCells является более серовато-белым (на самом деле # f7f7f7), и, как следствие, рамка UILabels видна безобразно ..

Итак, каков наилучший способ установить цвет фона UILabelsкогда это должно изменяться между различными версиями iOS?Я знаю, что могу использовать opaque = NO и [UIColor clearColor], но я бы предпочел закрасить фон UILabels из соображений производительности.

Ответы [ 5 ]

4 голосов
/ 26 октября 2011

Ничего плохого в ответе gcamp, но если вы предпочитаете оставить фон белым на iOS4 и iOS5, просто сделайте это:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    [cell setBackgroundColor:[UIColor whiteColor]];
}
4 голосов
/ 12 октября 2011

В методе делегата tableView:willDisplayCell: для UITableViewCell будет задан белый цвет фона или, в iOS 5, сероватый.

Вы можете изменить все свои backgroundColor всех ваших подпредставлений.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    for (UIView* view in cell.contentView.subviews) {
        view.backgroundColor = cell.backgroundColor;
    }
}
3 голосов
/ 19 октября 2011

Я видел эту проблему в своем пользовательском UITableViewCell в сгруппированном TableView. Я просто установил цвет фона метки, чтобы очистить, и это исправило его для меня и работает в iOS4 и iOS5. Я установил это в пользовательском коде ячейки, где создается UILabel, как показано ниже:

    [nameLabel setBackgroundColor:[UIColor clearColor]];

После того, как проблема исчезла.

1 голос
/ 12 октября 2011

Что я сделал, так это установил цвет фона ячейки [UIColor whiteColor] в willdisplaycell ...

Таким образом, я контролирую, как все выглядит.

1 голос
/ 12 октября 2011

Вы можете позвонить:

 [[UIDevice currentDevice] systemVersion]

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

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

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