美文网首页
iOS tableView reloadData后上下偏移

iOS tableView reloadData后上下偏移

作者: gale_小米 | 来源:发表于2022-02-10 09:55 被阅读0次
    image.png

    在网上查过多种方式都试过,但是还是没有效果
    网络方式1(无效)

           self.dateTableView.tableFooterView = UIView.init(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
            self.dateTableView.tableHeaderView = UIView.init(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
           self.dateTableView.estimatedRowHeight = 0;
           self.dateTableView.estimatedSectionFooterHeight = 0;
            self.dateTableView.estimatedSectionHeaderHeight = 0;
    

    网络方式2(无效)

        //TableView 刷新后,出现偏移或抖动的现象
        var cellHeights = [IndexPath: CGFloat]()
    
        func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
            if indexPath.row  == tableView.indexPathsForVisibleRows?.last?.row  {
                DispatchQueue.main.async {
                    //print("-----willDisplay-----")
                    self.dateTableView.setContentOffset(CGPoint(x: 0, y: -1), animated: false)
                }
            }
        }
    
        func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
            //print("estimatedHeightForRowAt = \( cellHeights[indexPath] )")
            return cellHeights[indexPath] ?? UITableView.automaticDimension
        }
    

    后续用了一种取巧的方式记录reloadData次数,当reloadData次数大于1时给tableview添加一个headerView把view顶下来;

    ......
        
        func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
            if self.reloadDataNum <= 1 {
                return 0
            }
            return 40
        }
        
        func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
            if section == 0{
                if self.reloadDataNum > 1 {
                    let headerView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 40))
                    return headerView
                }
            }
            return nil
        }
    ......
    

    相关文章

      网友评论

          本文标题:iOS tableView reloadData后上下偏移

          本文链接:https://www.haomeiwen.com/subject/aywmhrtx.html