Как создать UITableViewCell с прозрачным фоном - PullRequest
69 голосов
/ 17 июня 2009

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

Есть идеи, как этого достичь?

Ответы [ 9 ]

121 голосов
/ 18 июня 2009

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

UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;
42 голосов
/ 22 октября 2010

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

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

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

30 голосов
/ 17 июня 2009

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

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 скрыто более одного вида. Это должно прояснить все из них на вашем пути.

25 голосов
/ 14 ноября 2011
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{

    cell.backgroundColor = [UIColor clearColor];
    cell.backgroundView.backgroundColor = [UIColor clearColor];
}
18 голосов
/ 04 февраля 2014

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

Objective-c версия:

cell.backgroundColor = [UIColor clearColor];

Swift версия:

cell.backgroundColor = UIColor.clearColor()
10 голосов
/ 24 августа 2011

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

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

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

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

2 голосов
/ 24 октября 2014

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

2 голосов
/ 27 июля 2009

У меня была проблема, когда мое пользовательское фоновое изображение ячеек таблицы было наложено на белый фон метки, я попробовал все и, наконец, установил фон в прозрачный цвет в 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];
}
0 голосов
/ 13 июня 2018

Вот мое решение в Swift 4.1:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.backgroundView = UIImageView(image: "Image")
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    cell.backgroundColor = UIColor.clear
{
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...