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
кроме того, убедитесь, что ваш tableview на самом деле имеет прозрачный фон (в раскадровке):
на это был дан ответ, но неверно во многих отношениях.
вам нужно реализовать следующий метод делегата:
- (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 }
первый сет
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];
в моем случае ячейка была создана с использованием 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