Как создать UITableViewCell с прозрачным фоном

Я пытаюсь сделать цвет фона UITableViewCell прозрачным. Но ничего не работает. У меня есть некоторые изображения/кнопки внутри tableViewCell, и я бы хотел, чтобы белый фон grouptableview исчез, чтобы получить "плавающий" эффект для изображений и кнопок (как если бы они не были внутри tableview).

Любая идея, как это можно сделать?

Ответ 1

Если оба других параметра не работают, попробуйте это

UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;

Ответ 2

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

"Примечание. Если вы хотите изменить цвет фона ячейки (установив цвет фона ячейки через свойство backgroundColor, объявленное UIView), вы должны сделать это в tableView: willDisplayCell: forRowAtIndexPath: метод делегата а не в tableView: cellForRowAtIndexPath: источника данных. Изменения в цветах фона ячеек в представлении таблицы группового стиля влияют на iOS 3.0, который отличается от предыдущих версий операционной системы. Теперь он влияет на область внутри закругленный прямоугольник вместо области вне его."

https://developer.apple.com/documentation/uikit/uitableviewcell

Ответ 3

Начните с этих статей, чтобы правильно настроить цвет фона:

http://howtomakeiphoneapps.com/2009/03/how-to-add-a-nice-background-image-to-your-grouped-table-view/

http://pessoal.org/blog/2009/02/25/customizing-the-background-border-colors-of-a-uitableview/

Затем попробуйте все следующие строки:

[[cell contentView] setBackgroundColor:[UIColor clearColor]];
[[cell backgroundView] setBackgroundColor:[UIColor clearColor]];
[cell setBackgroundColor:[UIColor clearColor]];

В UITableViewCell больше скрывается только один вид. Это должно сделать все на вашем пути понятным.

Ответ 4

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{

    cell.backgroundColor = [UIColor clearColor];
    cell.backgroundView.backgroundColor = [UIColor clearColor];
}

Ответ 5

У меня есть простое решение

Objective-c версия:

cell.backgroundColor = [UIColor clearColor];

версия Swift:

cell.backgroundColor = UIColor.clearColor()

Ответ 6

По умолчанию фон вашего UITableViewCell белый. Выполнение myCell.backgroundColor = [UIColor clearColor]; сделает ваш UITableViewCell прозрачным, но вы не почувствуете разницу, потому что UITableView (создатель вашего UITableViewCell) также имеет белый фон по умолчанию.

Если вы хотите увидеть свой фон UIView, вам нужно сделать прозрачность вашей ячейки и вашего стола:

myTableView.backgroundColor = [UIColor clearColor];
myTableCell.backgroundColor = [UIColor clearColor];

Мартин Магакян

Ответ 7

Если вы используете раскадровки, обязательно снимите флажок "Непрозрачный" для вашего прототипа UITableViewCells

Ответ 8

У меня возникла проблема, когда мой пользовательский фоновый рисунок tableviewcell был наложен на белый ярлык ярлыков, я все испробовал и, наконец, установил фон, чтобы очистить цвет в viewWillAppear сделал трюк.

      - (void)viewWillAppear:(BOOL)animated
    {
[super viewWillAppear:animated];
    self.tableView.backgroundColor = [UIColor clearColor]; // if this is not here, cell background image is covered with a white rectangle :S
    }

и в строкеForCellAtIndexPath я устанавливаю фоновое изображение:

 if(!cell) {
    cell = [[[UITableViewCell alloc] initWithFrame: ...
    UIImageView *cellBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbg.jpg"]];
    [cell setBackgroundView:cellBG];
    [cellBG release];
}