Полупрозрачные ячейки UITableViewCells не являются прозрачными, пока они не были прокручены за пределы экрана - PullRequest
1 голос
/ 19 августа 2011

[ИСПРАВЛЕНО] Попробовав несколько разных решений, я наконец-то нашел одно для работы.Все, что мне нужно было сделать, это установить для ячейки backgroundColor очистку в методе willDisplayCell:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 

[cell setBackgroundColor:[UIColor clearColor]];

В моем UITableview есть фоновое изображение (Фото), а ячейки в табличном представлении имеют полупрозрачный фон.

Когда я впервые показываю UITableView, ячейки не отображаются прозрачными.Но как только я прокручиваю ячейку за пределами экрана и прокручиваю ее обратно на дисплеях ячеек с полупрозрачным фоном.

Есть ли у кого-нибудь какие-либо подсказки относительно того, почему он не отображается правильно, пока ячейка не прокручена?вне экрана?Смотрите прикрепленные изображения.Первый показывает просмотр таблицы, как только она загружена.и второе изображение показывает, как оно выглядит после прокрутки нескольких верхних ячеек с экрана и повторного включения.

Initial state of tableview.  The cells are not showing semi-transparent Top3 cells have been scrolled off screen and back on again and display how I want them to

Ниже приведен код, который я использую для настройкиячейка.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellPhotoIdentifier = @"PhotoDescriptionCell";


      UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellPhotoIdentifier] autorelease];

    // Configure the cell...
    cell.textLabel.text = [NSString stringWithFormat:@"Photo description %i", indexPath.row];
    cell.textLabel.textColor = [UIColor whiteColor];
    cell.opaque = NO;
    cell.contentView.backgroundColor = [UIColor blackColor];
    cell.contentView.opaque = NO;
    cell.contentView.alpha = 0.7;
    cell.textLabel.backgroundColor = [UIColor clearColor]; 

    return cell;
}

Я использую XCode 4 с IOS SDK 4.3

Ответы [ 2 ]

4 голосов
/ 22 августа 2011

Перечитав ответ, на который @progrmr дал ссылку, я попытался снова и смог заставить ее работать.

Мне нужно было установить цвет фона ячейки для очистки в willDisplayCell метод

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 

[ячейка setBackgroundColor: [UIColor clearColor]];

0 голосов
/ 19 августа 2011

Скорее всего, вы сначала загружаете ячейки, а затем устанавливаете их прозрачными, как только они уже загружены. Затем, когда вы прокрутите их за пределы экрана и снова включите, они станут прозрачными, потому что вы заставили их перезагрузить их с правильными настройками.

Вы можете исправить эту покупку, изменив свойства ячейки в Интерфейсном Разработчике, чтобы ячейки были прозрачными с самого начала, или после того, как вы настроите ячейку, вам нужно добавить код, который заставит ячейку перезагрузить себя. Позвольте мне попытаться найти это, поскольку я не знаю, на макушке.

Этот вопрос должен помочь вам выяснить перезагрузку ячейки: Перезагрузка только одного UITableViewCell для UITableview

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