2010-02-18 2 views
1

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

- (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]; 
} 

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

Incorrect yellow background with Alpha Correct yellow background with Alpha

+0

UITableViewCell не имеет свойство BackgroundColor .... Может ли это быть ваша проблема ? –

+0

@Chip Он делает, 'backgroundColor' наследуется от' UIView' –

+0

Конечно. Сожалею. Является ли это обычным подклассом или заранее определенным стилем? –

ответ

1

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

- (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; 
} 

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

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

+0

@Chip - Спасибо за ответ, я попробую и посмотрю, что произойдет. Я думаю, что вы можете быть прав о наложении на серый цвет фона. Если это проблема, есть ли решение для этого? –

+0

Если это проблема, подкласс UITableViewCell. Затем вы можете сделать «сплошную фоновую ячейку» белой и иметь цветной фон с альфой перед ним. Альтернативно, если прозрачность не нужна, выясните непрозрачный цвет ячейки и просто установите ее. –

0

Я уверен, что этот метод не поддерживается, но он действительно работает. Закройте 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 (красный) и т.д.

Смежные вопросы