Как создать UITableViewCell с прозрачным фоном
Я пытаюсь установить цвет фона UITableViewCell прозрачным. Но ничего, кажется, не работает. У меня есть некоторые изображения / кнопки внутри tableViewCell и я хотел бы сделать белый grouptableview фон исчезает, чтобы получить "плавающий" эффект для изображений и кнопок (как будто они не были внутри tableview).
есть идеи, как это можно сделать?
9 ответов:
если оба других варианта не работают попробуйте это
UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; backView.backgroundColor = [UIColor clearColor]; cell.backgroundView = backView;
Это на самом деле ответ в документах UITableViewCell. Поэтому, хотя вам нужно настроить прозрачность на ваших элементах управления, фактический цвет фона ячейки должны установите в ниже.
"Примечание: Если вы хотите изменить цвет фона ячейки (установив цвет фона ячейки через свойство backgroundColor, объявленное UIView), вы должны сделать это в tableView: willDisplayCell:forRowAtIndexPath: метод делегата, а не в tableView: cellForRowAtIndexPath: из источника данных. Изменение цвета фона ячеек в табличном представлении в стиле группы имеет эффект в iOS 3.0, который отличается от предыдущих версий операционной системы. Теперь он влияет на область внутри скругленного прямоугольника, а не на область за его пределами."
https://developer.apple.com/documentation/uikit/uitableviewcell
начните с этих статей, чтобы правильно настроить цвет фона:
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. Это должно быть сделайте все из них на вашем пути ясно.
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { cell.backgroundColor = [UIColor clearColor]; cell.backgroundView.backgroundColor = [UIColor clearColor]; }
у меня есть простое решение
С версия:
cell.backgroundColor = [UIColor clearColor];Свифт версия:
cell.backgroundColor = UIColor.clearColor()
по умолчанию фон вашего UITableViewCell белый. Делать
myCell.backgroundColor = [UIColor clearColor];сделает ваш UITableViewCell прозрачным, но вы не почувствуете разницы, потому что UITableView (contener вашего UITableViewCell) также имеет белый фон по умолчанию.Если вы хотите увидеть свой фон UIView, вам нужно будет сделать вашу ячейку и фон таблицы прозрачными:
myTableView.backgroundColor = [UIColor clearColor]; myTableCell.backgroundColor = [UIColor clearColor];Мартин Magakian
Если вы используете раскадровки, не забудьте снять флажок "непрозрачный" для вашего прототипа UITableViewCells
у меня была проблема, когда мой пользовательский tableviewcell backgroundimage был наложен на белый фон метки, я попробовал все, и, наконец, установка фона для очистки цвета в 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 }и в rowForCellAtIndexPath я установил фоновое изображение:
if(!cell) { cell = [[[UITableViewCell alloc] initWithFrame: ... UIImageView *cellBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbg.jpg"]]; [cell setBackgroundView:cellBG]; [cellBG release]; }
вот мое решение в 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 {
Comments