【发布时间】:2018-11-02 07:36:54
【问题描述】:
这是一个包含 5 个单元格和一个部分的 tableView。拉动tableView刷新时有蓝色间隙。
代码如下:
- (UITableView *)salesRankTableView{
if(!_salesRankTableView){
_salesRankTableView = [[UITableView alloc] initWithFrame: CGRectMake(8, 183, KScreenWidth - 16, KScreenHeight-183-64) style: UITableViewStyleGrouped];
[_salesRankTableView registerNib: [UINib nibWithNibName: NSStringFromClass(SalesRankTableViewCell.class) bundle:nil] forCellReuseIdentifier: kSalesRankTableViewCell];
_salesRankTableView.layer.contents = (__bridge id _Nullable)([UIImage imageNamed: @"blue"].CGImage);
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget: self refreshingAction: @selector(rankRefresh)];
header.layer.contents = (__bridge id _Nullable)([UIImage imageNamed: @"white"].CGImage);
_salesRankTableView.mj_header = header;
}
return _salesRankTableView;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 5;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 56;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return [UIView new];
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [UIView new];
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return CGFLOAT_MIN;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return CGFLOAT_MIN;
}
为了去掉tableView前面的蓝色缝隙。我更改了 tableView 的背景颜色。并遇到了另一个问题。
tableView 的空白处的 backgroundColor 很重要。 如何设置不同?
代码如下:
- (UITableView *)salesRankTableView{
if(!_salesRankTableView){
_salesRankTableView = [[UITableView alloc] initWithFrame: CGRectMake(8, 183, KScreenWidth - 16, KScreenHeight-183-64) style: UITableViewStyleGrouped];
[_salesRankTableView registerNib: [UINib nibWithNibName: NSStringFromClass(SalesRankTableViewCell.class) bundle:nil] forCellReuseIdentifier: kSalesRankTableViewCell];
_salesRankTableView.layer.contents = (__bridge id _Nullable)([UIImage imageNamed: @"white"].CGImage);
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget: self refreshingAction: @selector(rankRefresh)];
header.layer.contents = (__bridge id _Nullable)([UIImage imageNamed: @"white"].CGImage);
_salesRankTableView.mj_header = header;
}
return _salesRankTableView;
}
我之前用之前的代码在tableView后面插入了一个白色的view。
有点用力,如何做的更好?
【问题讨论】:
-
可能最简单的解决方案是保持白色背景,但还要观察
contentSize并相应地更改表格视图的高度。 -
你有两个部分或两个不同的单元格。不知道没有部分和没有行单元没有人了解你的确切问题。看看你是否有两个部分比 heightForHeaderInSection 和 heightForFooterInSection 返回 0.
-
@Krishna kushwaha,只有一个部分,一种细胞
标签: ios objective-c uitableview