UITableView在单元格下方扩展不同的背景颜色

时间:2013-11-26 22:56:46

标签: ios iphone objective-c uitableview

我有一个UITableView,我已经给了headerView绿色背景。我还给了UITableView相同的绿色背景颜色,这样当tableView被拉下来时感觉就像tableView上方的无缝颜色。效果很好。

问题是我的tableView只有4行,而在下面它再次显示绿色。

enter image description here

如何在行下方显示白色,以便在向下拉tableView时仅看到绿色背景颜色?

4 个答案:

答案 0 :(得分:7)

您可以添加额外的顶视图,与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 :(得分: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;
}

在viewWillLayoutSubviews中放置contentSize设置可确保在您旋转设备时将其重置为该值。

答案 2 :(得分:0)

正如我在这些评论中所说的那样,headerView将在navigationBar下面,如果你下拉tableview,你会看到headerView绿色。所以你可以为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;
}

答案 3 :(得分:0)

与接受的答案相同-在Swift 5中:

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

let bgView : UIView = UIView.init(frame: frame)
bgView.backgroundColor = UIColor.green

self.tableView.insertSubview(bgView, at: 0)

还要添加以下代码(紧随上述代码之后),以确保其适用于其他尺寸的设备:

bgView.translatesAutoresizingMaskIntoConstraints = true
bgView.autoresizingMask = [UIView.AutoresizingMask.flexibleWidth]