这是一个具有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的backgroundColor。并遇到了另一个问题。
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后面插入一个白色视图。
有点用,怎么做得更好?
答案 0 :(得分:0)
尝试将_salesRankTableView
的背景色设置为white
。
_salesRankTableView.backgroundColor = [UIColor clearColor]; // Newline
_salesRankTableView.mj_header.backgroundColor = [UIColor whiteColor];
更新:
替换下面的tableView
委托方法:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView(frame: CGRect.zero)
}
答案 1 :(得分:0)
您可以通过在viewDidLoad()中键入一行代码来实现它
self.tableView.tableFooterView = UIView()
这里将删除可用空间的单元格,如果您希望将tableview的颜色更改为其他颜色,则可以通过更改tableView的背景色来实现;如果希望将superview背景的颜色作为可用空间,则应该将tableview背景颜色更改为“透明”。
self.tableView.backgroundColor = UIColor.clear
希望这会有所帮助。