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: метод вашего делегата табличного представления.
Это довольно неприятная проблема. Вот мое текущее решение:
Добавьте это к вашему 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;