UITableView цвет фона устанавливается дважды - PullRequest
1 голос
/ 16 февраля 2010

Я пытаюсь создать прозрачную таблицу со значением альфа. В моем основном цикле я создаю фоновое изображение, добавляю его в главное окно, затем создаю UITableView с прозрачным backgroundColor и добавляю его в главное окно. По какой-то причине цвет фона tableView устанавливается дважды в ячейках с записями. (т.е. ячейка с записью имеет альфа-значение 0,8 вместо 0,4)

В моем методе инициализации UITableView это код, который у меня есть

self.tableView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.4];
[self.tableView setNeedsDisplay];

Это работает по большей части, за исключением некоторых странных причин, ячейки с записями менее прозрачны, чем ячейки, у которых нет записей

Я попытался поместить в метод cellForRowAtIndexPath следующее: (попробовал все подпредставления ячейки просто для уверенности)

cell.backgroundView.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor clearColor];
cell.textLabel.backgroundColor = [UIColor clearColor];
[cell.backgroundView setNeedsDisplay];
[cell.contentView setNeedsDisplay];
[cell.textLabel setNeedsDisplay];

это не помогло решить проблему. Я много искал в Интернете, но никто, похоже, не сталкивался с этой проблемой; любая помощь будет принята с благодарностью!

Ответы [ 3 ]

0 голосов
/ 03 марта 2010

Если вы можете переместить свой фоновый эффект в другое представление позади tableView, тогда вы можете установить backgroundColor для tableView в clearColor. Который также будет использоваться для contentView.

(И помните, что существуют причины производительности, по которым в конфигурации по умолчанию для таблицы используются непрозрачные представления.)

0 голосов
/ 10 мая 2011

У меня была такая же проблема, единственное, что сработало для меня, это:

tableView.backgroundView = [[[UIView alloc]init]autorelease];
0 голосов
/ 16 февраля 2010

По какой-то причине UITableView сбрасывает цвет фона ячейки между методом делегата tableView:cellForRowAtIndexPath: и отображает его.

Попробуйте реализовать tableView:willDisplayCell:forRowAtIndexPath: и установить прозрачный цвет фона ячейки.

Табличное представление отправляет это сообщение своему делегату непосредственно перед тем, как оно использует ячейку для рисования строки, что позволяет делегату настроить объект ячейки перед его отображением. Этот метод дает делегату возможность переопределить основанные на состоянии свойства, установленные ранее табличным представлением, такие как выделение и цвет фона. После возврата делегата табличное представление устанавливает только свойства альфа-канала и фрейма, а затем только при анимации строк по мере их скольжения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...