如何设置UITableView空白空间的backgroundColor不同?

时间:2018-11-02 07:36:55

标签: ios objective-c uitableview

这是一个具有5个单元格和一个区域的tableView。拉tableView刷新时会有一个蓝色的缝隙。

one

代码如下:

- (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。并遇到了另一个问题。

2

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后面插入一个白色视图。

有点用,怎么做得更好?

2 个答案:

答案 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

希望这会有所帮助。