UITableViewCell отображает неправильные цвета фона на основе альфа - PullRequest
1 голос
/ 18 февраля 2010

У меня есть UITableViewCell со стилем UITableViewStyleGrouped, и я хотел бы изменить цвет фона ячейки.

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)ip {
    // Do cell creation stuff ...

    cell.backgroundColor = 
      [UIColor colorWithRed:255.0/255.0 green:243.0/255.0 blue:175.0/255.0 alpha:0.50];
}

Проблема в том, что он не отображается должным образом на сетке с UITableViewStyleGrouped;Я использую тот же цвет на UITableViewStylePlain, и он отображается правильно.Я разрабатываю для OS 3.0 и прочитал несколько сообщений о настройке цвета фона.Я могу установить цвет, который он не устанавливает должным образом!Чего мне не хватает?

Incorrect yellow background with Alpha Correct yellow background with Alpha

Ответы [ 2 ]

1 голос
/ 05 марта 2010

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell.
    cell.backgroundColor = [UIColor colorWithRed:1.0 green:0 blue:0 alpha:1.0];

    return cell;
}

Дважды проверьте документацию , если вам нужно что-то более сложное.

Кроме того, может ли произойти сдвиг цвета из-за разных цветов фона таблицы в двух разных стилях? UITableViewStylePlain tableView имеет белый фон по умолчанию. UITableViewStyleGrouped tableView будет иметь серый фон. Поскольку вы устанавливаете альфа на 0,5, он будет накладываться на два разных цветовых фона и даст вам цветовой сдвиг.

0 голосов
/ 31 января 2012

Я уверен, что этот метод не поддерживается, но он работает.Закройте xcode, откройте файл .xib или .storyboard в текстовом редакторе, таком как vi.Найдите XML для своей таблицы и измените цвет ячейки.Например, вот оригинальный раздел для ячейки белой таблицы по умолчанию:

<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" indicatorStyle="black" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="k63-au-YAF">
  <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
  <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  <prototypes>

Найдите и измените тег цвета.Вот пример, который включает цвета из исходного сообщения:

<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" indicatorStyle="black" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="k63-au-YAF">
  <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
  <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  <color key="backgroundColor" red="1.0" green="0.95294117647059" blue="0.68627450980392" alpha="0.5" colorSpace="calibratedRGB"/>
  <prototypes>

Снова откройте xcode, и цвет вашей ячейки был обновлен.

Примечание. Для кодов цвета 243/255 =0,95294117647059 (зеленый), 175/255 = 0,68627450980392 (красный) и т. Д.

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