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



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



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



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



the table

586   21  

21 ответов:

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

в cellForRowAtIndexPath

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

поставить этот:

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

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

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

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

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

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

добавьте это в ваш 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];

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

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

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

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

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
}

swift 3, 4

cell.backgroundColor = UIColor.clear

первый сет

tableView.backgroundColor = [UIColor clearColor];

втором сете

tableCell.backgroundColor = [UIColor clearColor];

создать выход IB для табличного представления @IBOutlet weak 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() 

}

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

попробовать

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

и

cell.backgroundColor = [UIColor clearColor];

одно к хорошему. По умолчанию цвет UITable кажется белым (я не знаю, почему)

Background white

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

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

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

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

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

swift 3

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.backgroundColor = UIColor.clear
}
// Fix iOS 7 clear backgroundColor compatibility 
// I Think this two lines only are enough

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

Set

tableView.backgroundColor = [UIColor clearColor];

в viewDidLoad.

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

tableView.backgroundView = nil;

в swift 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
}

Comments

    Ничего не найдено.