我有一个UITableView
,我已经给了headerView
绿色背景。我还给了UITableView
相同的绿色背景颜色,这样当tableView
被拉下来时感觉就像tableView
上方的无缝颜色。效果很好。
问题是我的tableView
只有4行,而在下面它再次显示绿色。
如何在行下方显示白色,以便在向下拉tableView
时仅看到绿色背景颜色?
答案 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]