UITableView прозрачный фон

Я понимаю, что iOS 7 официально не выпущен, и мы не должны обсуждать его, но я схожу с ума, пытаясь разобраться в этой проблеме. На iOS 6 мой вид таблицы был прозрачным и выглядел великолепно. Первый запуск iOS 7, а фон белый.

Я попытался сделать таблицу backgroundColor, цвет ячейки и т.д. для UIColor clearColor, но не имеет никаких изменений.

Как решить эту проблему?

the table

Ответ 1

    // Fix for iOS 7 to clear backgroundColor
    cell.backgroundColor = [UIColor clearColor];
    cell.backgroundView = [[UIView new] autorelease];
    cell.selectedBackgroundView = [[UIView new] autorelease];

в cellForRowAtIndexPath

Кроме того, убедитесь, что на вашем столе есть прозрачный фон (в раскадровке): enter image description here

Ответ 2

Поместите это:

cell.backgroundColor = [UIColor clearColor];

В этом разделе:

cellForRowAtIndexPath

Ответ 3

Это ответ, но неправильно во многих отношениях.

Вам необходимо реализовать следующий метод делегата:

    - (void)tableView:(UITableView *)tableView  willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [cell setBackgroundColor:[UIColor clearColor]];
}

Вы не можете поместить исправление в cellForRowAtIndexPath, потому что это после отображения ячейки, и она будет мигать белым фоном, прежде чем фон будет очищен (на более медленных устройствах).

Используйте этот метод делегата, и ваши проблемы решены!

Ответ 4

Попробуйте сначала установить backgroundView на нуль.

[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor clearColor]];

Не уверен, что это изменение документации с iOS7 или всегда было и просто не повлияло на цвет фона, но на UITableView Reference Reference @property backgroundView

"Вы должны установить это свойство равным нулю, чтобы установить цвет фона в виде таблицы."

изменить: исправленный синтаксис кода

Ответ 5

На самом деле официально правильное место для изменения цвета фона ячейки отличается в соответствии с документацией (UITableViewCell Class Reference):

Если вы используете предопределенную или настраиваемую ячейку, вы можете изменить ячейки с использованием свойства backgroundView или путем изменения унаследованное свойство backgroundColor. В iOS 7 ячейки имеют белый цвет фон по умолчанию; в более ранних версиях iOS, ячейки наследуют цвет фона в виде таблицы. Если вы хотите изменить цвет фона ячейки, сделайте это в tableView: willDisplayCell: forRowAtIndexPath: метод просмотра таблицы делегировать.

Ответ 6

Это довольно неприятная проблема. Здесь мое текущее решение:

Добавьте это в свой подкласс UITableViewCell.

- (void)didMoveToSuperview {
    [super didMoveToSuperview];

    self.backgroundColor = [UIColor clearColor];
}

Ответ 7

Это работало для меня в iOS7 +:

self.tableView.backgroundColor =[UIColor blueColor];
self.tableView.opaque = NO;
self.tableView.backgroundView = nil;`

а затем в cellForRowAtIndexPath:

cell.backgroundColor = [UIColor clearColor];

Ответ 8

Свифт 3, 4 и 5

cell.backgroundColor = UIColor.clear

Ответ 9

попробуйте этот фрагмент кода

cell.contentView.backgroundColor = [UIColor clearColor];
cell.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5];

Ответ 10

Это работало только для меня, когда я отредактировал четкий цвет фона для каждой ячейки и ясный цвет для самой таблицы. ПРОГРАММИРОВАННО

чтобы установить четкий цвет для таблицы:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    initMenu()
    myTableView.backgroundColor = UIColor.clearColor()
}

установить цвет для ячеек:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("tablecellid", forIndexPath: indexPath)
    cell.backgroundColor = UIColor.clearColor()
    return cell
}

Ответ 11

Одна вещь к хорошему. Цвет UITable по умолчанию выглядит белым (я не знаю почему)

Background white

Но лучше измените это.

Ответ 12

Первый набор

tableView.backgroundColor = [UIColor clearColor];

Второй набор

tableCell.backgroundColor = [UIColor clearColor];

Ответ 13

создать IB Outlet для просмотра таблицы  @IBOutlet слабый var yourTable: UITableView!

в поле просмотра load

override func viewDidLoad() {
    yourTable.delegate = self
    yourTable.dataSource = self

    yourTable.backgroundColor = UIColor.clearColor()
}

если вы хотите очистить цвет ячейки, сделайте это в

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    cell.backgroundColor = UIColor.clearColor() 

}

Ответ 14

В моем приложении мне пришлось установить backgroundColor в моем классе UITableViewCell на [UIColor clearColor] цвет, когда я обновился для iOS 7.

Ответ 15

В моем случае ячейка была создана с использованием xib. похоже, что построитель интерфейса на xcode5 имеет проблемы с установкой clearColor на cell.backgroundColor.

Все, что мне нужно было сделать, это установить

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// get the cell from the nib
//then force the backgroundColor
cell.backgroundColor = [UIColor clearColor]
return cell;
}

Ответ 16

Try

[myTable setSeparatorStyle:UITableViewCellSeparatorStyleNone];
[myTable setSeparatorInset:UIEdgeInsetsZero];

и

cell.backgroundColor = [UIColor clearColor];

Ответ 17

Просто выберите "Очистить цвет" в представлении "Фон" для таблицы и для ячейки.

Ответ 18

swift 3

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.backgroundColor = UIColor.clear
}

Ответ 19

// Fix iOS 7 clear backgroundColor compatibility 
// I Think this two lines only are enough

cell.backgroundColor = [UIColor clearColor];
cell.selectedBackgroundView = [[UIView new] autorelease];

Ответ 20

Set

tableView.backgroundColor = [UIColor clearColor];

in viewDidLoad.

Если это не работает, попробуйте:

tableView.backgroundView = nil;

Ответ 21

В быстрой 3

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath)
    cell.backgroundColor = .clear
    cell.backgroundView = UIView()
    cell.selectedBackgroundView = UIView()
    return cell
}