2013-07-06 4 views
3

Попытка создать сгруппированное представление таблицы с прозрачными ячейками без каких-либо границ. Цвет фона Tableview сверху донизу становится темнее и легче.IOS сгруппированные прозрачные ячейки tableview

, но как-то настольные ячейки отражают только верхнюю часть фонового изображения, которое темнее.

Я пробовал тонны ответов из stackoverflow, но ни один из них не работает и не смог найти решение этой проблемы.

Что это должно выглядеть следующим образом:

enter image description here

Что это выглядит как с моим кодом:

enter image description here

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self.tableView setBackgroundView:nil]; 
    self.tableView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"menu_background.png"]]; 
} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor=[UIColor clearColor]; 
    cell.backgroundView=[[UIView alloc] initWithFrame:CGRectZero]; 

// UIView *backView = [[UIView alloc] initWithFrame:CGRectZero]; 
// backView.backgroundColor = [UIColor clearColor]; 
// cell.backgroundView = backView; 

// [[cell contentView] setBackgroundColor:[UIColor clearColor]]; 
// [[cell backgroundView] setBackgroundColor:[UIColor clearColor]]; 
// [cell setBackgroundColor:[UIColor clearColor]]; 

// cell.backgroundColor = [UIColor clearColor]; 
// cell.backgroundView.backgroundColor = [UIColor clearColor]; 

// cell.contentView.backgroundColor = [UIColor clearColor]; 
// cell.backgroundColor = [UIColor clearColor]; 
// UIView *bgView = [[UIView alloc] init]; 
// [[bgView layer] setCornerRadius:10.0f]; 
// [bgView setBackgroundColor:[UIColor colorWithWhite:1.0f alpha:0.25f]]; 
// cell.backgroundView = bgView; 
//  
    return cell; 
} 

Что мне не хватает? Какое решение для этого?

Спасибо, Space

+0

где ваши изображения? –

+0

@NishantTyagi Я без проблем вижу изображения –

+0

add yourtable.backgroundView = nil; в вашем делетете метод cellForRowAtIndexPath. и я говорю о изображениях, которые вы приложили в своем вопросе. –

ответ

2

UPDATE Оказывается, это будет делать трюк для сгруппированных таблиц:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor = [UIColor clearColor]; 
    cell.layer.backgroundColor = [UIColor clearColor].CGColor; 
} 

Вы просто установить цвет слоя фона ячейки в дополнение к установке цвет фона ячейки.

ORIGINAL Если вы можете использовать разгруппированы (я не вижу ничего в вашем макете, который нуждается в сгруппированных стиль), должно работать:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor = [UIColor clearColor]; 
} 

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

+0

Я в конечном итоге делаю это, и это работает, но мне интересно, почему сгруппированный столбец вызывает эту проблему, я использую много сгруппированных табличных представлений в моем коде, и я не хочу сталкиваться с подобной проблемой в будущем –

+0

Помогло ли мое обновленное решение для вас? –

+0

Обновленное решение тоже не работает, я просто использую простой просмотр таблиц. –

0

Что вы сделали правильно, но попробуйте установить фоновый вид ячейки на ноль, чтобы сделать ячейку полностью прозрачной. Если вы используете сгруппированный просмотр таблицы и подкласс ячейки UITableViewCell, границы исчезают, устанавливая фоновый вид на «nil»
cell.backgroundView = nil;

попробовать этот раз не уверен

1

Может быть, вы намеренно оставили это, но, как вы получаете вашу новую ячейку вы dequeing его? это обычная ячейка? при условии, что это стандартная ячейка, я хотел бы попробовать:

[[cell imageView] setBackgroundColor:[UIColor clearColor]]; 

и я бы держать

[cell setBackgroundColor:[UIColor clearColor]]; 

Другая идея состоит в том, чтобы установить его на белый и установите альфа равным 0, в конце концов, это ясно, но это не похоже на лучшее решение.

Возможно, это сработает? Я не пытался воссоздать проблему, чтобы протестировать это решение. Если это пользовательский UITableViewCell, тогда я бы просто установил свойства в xib.

Смежные вопросы