UITableView очистить фон

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

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

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

стол

21 ответ

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

в cellForRowAtIndexPath

Также убедитесь, что у вашего табличного представления на самом деле прозрачный фон (в раскадровке):введите описание изображения здесь

Положи это:

cell.backgroundColor = [UIColor clearColor];

В этой секции:

cellForRowAtIndexPath

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

Вам необходимо реализовать приведенный ниже метод делегата:

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

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

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

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

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

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

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

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

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

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

Свифт 3, 4

cell.backgroundColor = UIColor.clear

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

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

- (void)didMoveToSuperview {
    [super didMoveToSuperview];

    self.backgroundColor = [UIColor clearColor];
}

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

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

а затем в cellForRowAtIndexPath:

cell.backgroundColor = [UIColor clearColor];

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

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

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
}

Первый сет

tableView.backgroundColor = [UIColor clearColor];

Второй сет

tableCell.backgroundColor = [UIColor clearColor];

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

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

Создать IB Outlet для табличного представления @IBOutlet слабый var yourTable: UITableView!

с учетом нагрузки

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() 

}

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

Фон белый

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

Просто выберите Очистить цвет на фоне просмотра для таблицы, а также для ячейки.

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

В моем случае ячейка была создана с использованием 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;
}

Пытаться

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

А также

cell.backgroundColor = [UIColor clearColor];

Свифт 3

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

Свифт 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
}
// Fix iOS 7 clear backgroundColor compatibility 
// I Think this two lines only are enough

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

Задавать

tableView.backgroundColor = [UIColor clearColor];

в viewDidLoad.

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

tableView.backgroundView = nil;
Другие вопросы по тегам