CoderMJLee/MJRefresh

tableview的style为UITableViewStyleGrouped时 footer多出空白

fengshh93 opened this issue · 7 comments

把tableview初始化的style 改成UITableViewStyleGrouped类型,上拉刷新的footer和最后一个cell多了一段空白距离

解决了吗?
.plain 可解决,但不想改代码 @fengshh93

未解决啊,很多列表都必用group,后面看看吧

这里我以 I18NExampleViewController.swift 这个第二个 tab 栏为例.

let footer = MJRefreshAutoNormalFooter {
    DispatchQueue.main.asyncAfter(deadline: .now() + 2) { [weak self] in
        guard let self = self else { return }
        self.tableView.mj_footer?.endRefreshing()
    }
}.link(to: tableView)

// 着重看这里. 让 Footer 上移 40
footer.ignoredScrollViewContentInsetBottom = -40
// 去除 Footer 引入 TableView 后导致的 contentInset 变动, 
// 因为这里是 Group 形式, Group 默认就会在头尾留空, 从而导致了界面异常的出现
tableView.contentInset = .zero

我并未隐藏footer 加载更多的时候用的是菊花的样式 直接继承了MJRefreshAutoNormalFooter , 那collectionView的footer也存在这样的问题,也是这个导致的吗

估计跟新系统上的一些状态栏高度有关系,我发现footer和最后一个cell的距离是20的高度,但是我在iOS11.3系统上并未发现不正确

这样试试

    CGRect frame = CGRectMake(0, 0, 0, 0.1);//关键设置view的高度
    UITableView.appearance.tableHeaderView = [[UIView alloc] initWithFrame:frame];
    UITableView.appearance.tableFooterView = [[UIView alloc] initWithFrame:frame];
// tips: 在延迟设置 datasource 之后,tableview会出现额外的35的偏移,设置tableHeaderView之后即可消除
        // [https://stackoverflow.com/questions/18880341/why-is-there-extra-padding-at-the-top-of-my-uitableview-with-style-uitableviewst]
if self.tableView.tableHeaderView == nil {
    self.tableView.tableHeaderView = UIView.init(frame: CGRect(x: 0, y: 0, width: self.tableView.width, height: CGFloat.leastNormalMagnitude))
}
if self.tableView.tableFooterView == nil {
    self.tableView.tableFooterView = UIView.init(frame: CGRect(x: 0, y: 0, width: self.tableView.width, height: CGFloat.leastNormalMagnitude))
}

这个一直存在,但不太行