【问题标题】:How to set UITableView empty space's backgroundColor different?如何设置 UITableView 空白空间的 backgroundColor 不同?
【发布时间】: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


【解决方案1】:

尝试将_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)
}

【讨论】:

  • 没用。标题视图是关联对象,用于拉刷新。
  • 这符合第一张图片的情况。
  • 答案已编辑。请检查。 “新行”评论的新事物和更新
  • 对不起。首先,您需要了解 mj_header 是什么。 github.com/CoderMJLee/MJRefresh。我插入一个图层并观察tableView的偏移来解决它
【解决方案2】:

你可以通过在 viewDidLoad() 中输入一行代码来实现

 self.tableView.tableFooterView = UIView()

这里的空闲单元格将被删除,如果您希望将 tableview 颜色更改为其他颜色,您可以通过更改 tableView 的背景颜色来实现。如果您希望超级视图背景的颜色作为可用空间,您应该将 tableview 背景颜色更改为“clear”。

 self.tableView.backgroundColor = UIColor.clear

希望它会有所帮助。

【讨论】:

  • 谢谢粉丝。这是完美的解决方案
  • 不适合我的情况。这是上层的情况。事实上,我使用github.com/CoderMJLee/MJRefresh。我认为答案是对回购做一些改变。而 Sulthan 的建议更适合。
猜你喜欢
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多