2013-11-26 3 views
3

У меня есть UITableView, который я дал headerView, который имеет зеленый фон. Я также дал UITableView тот же зеленый цвет фона, чтобы при снятии tableView он выглядел как бесцветный цвет выше tableView. Работает отлично.UITableView расширяет цвет фона под ячейками

Проблема заключается в том, что у моего tableView есть только 4 строки, а ниже - зеленый цвет.

enter image description here

Как я могу показать белый ниже строк вместо так что я вижу только зеленый цвет фона при натяжении вниз tableView?

+0

Возможно добавление белого Tableview footerView? – johan

+0

@johan Пробовал это, но он просто делает блок белого цвета (вид) и не выходит в бесконечность ниже клеток, как я бы предпочел. –

ответ

5

Вы можете добавить дополнительный вид сверху, так же, как и в this answer to UIRefreshControl Background Color:

CGRect frame = self.tableView.bounds; 
frame.origin.y = -frame.size.height; 

UIView *bgView = [[UIView alloc] initWithFrame:frame]; 
bgView.backgroundColor = [UIColor greenColor]; 

[self.tableView insertSubview:bgView atIndex:0]; 
+1

Решенный! Спасибо за отличный ответ! –

0

как я сказал в этих комментариях, таким образом заголовок будет находиться под навигационной панелью, и если вы потянете вниз по таблице, вы увидите зеленый заголовок. Таким образом, вы можете установить белый цвет для Tableview: (я тестировал и работать)

-(void) viewDidLoad { 

    self.tableView.backgroundColor = [UIColor whiteColor]; 

    headerView = [[UIView alloc] init]; 
    headerView.backgroundColor = [UIColor greenColor]; 

    UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(0, -50, 320, 120)]; 
    lab.backgroundColor = [UIColor greenColor]; 
    [headerView addSubview:lab]; 

    self.tableView.tableHeaderView = headerView; 

} 


#pragma mark - Table view data source 
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 

    return 80; 

} 


-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

    return headerView; 

} 


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 
+0

Извините, я думаю, вы неправильно поняли. Ячейки белые. Цвет фона TableView и заголовок - зеленый. Ниже ячейки также зеленые, потому что это цвет фона tableView. Но я хочу, чтобы только НИЖЕ клетки были белыми. –

+0

@ Ник Хаббард есть недоразумение. У вас будет только зеленая и зеленая зеленая? А остальная часть стола белая? – Ilario

+0

Нет, ячейки белые. Пожалуйста, ознакомьтесь с моим обновленным вопросом с примером изображения. –

2

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

-(void)viewWillLayoutSubviews { 
    self.tableView.contentSize = CGSizeMake(self.tableView.frame.size.width, 500); 
} 

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    CGFloat h = (indexPath.row == 4)? 400:44; 
    return h; 
} 

Ввод параметра contentSize в viewWillLayoutSubviews гарантирует, что он будет сброшен к этому значению, если повернуть устройство.

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