美文网首页
UITableView 滚动到指定位置(scrollToRow

UITableView 滚动到指定位置(scrollToRow

作者: 闻人歌 | 来源:发表于2020-09-17 14:08 被阅读0次

    scrollToRow与scrollRectToVisible

    • scrollToRow是通过设置 indexPath,滚动到指定的行
    • scrollRectToVisible:scroll so rect is just visible (nearest edges). nothing if rect completely visible; 某个cell 如果完全显示,或者不接近边界.该方法不生效.

    滚动时,是否开启动画

    open func scrollRectToVisible(_ rect: CGRect, animated: Bool)
    open func scrollToRow(at indexPath: IndexPath, at scrollPosition: UITableView.ScrollPosition, animated: Bool)
    

    这两个方法,都是可以设置动画属性的
    动画属性的设置

    滚动到指定位置

    一般的UITableView

    如果contentSize 较小,或者滚动的目的点比较简单,使用 scrollToRow 到指定的 cell

    滚动到目的点的场景比较复杂需要 2 个方法结合使用
    1. 使用 scrollToRow,滚动目的位置的附近.这里需要加上动画,加入动画以后,滚动时,系统才能将目的位置前的 cell 全部加载,展示,并且计算高度;否则,后面的scrollRectToVisible使用后,还是会有误差
    2. 在进行精确计算后,使用 scrollRectToVisible 方法,滚动到指定位置.scrollToRow 使用动画以后,会有 0.25s 的延时.因此,必须等 0.25s 之后,再用scrollRectToVisible偷偷进行一次矫正滑动
      比如:
    tableView.scrollToRow(at: IndexPath.init(row: 0, section: 4), at: .top, animated: true)
    
    let height = (kScreenWidth + introType.rawValue + comssionCellHeight + sellCellHeight + couponCellHeight) - (heightOfAddtionalHeader + 64)
    // 
    DispatchQueue.main.asyncAfter(deadline: .now()+0.3) {
      self.tableView.scrollRectToVisible(CGRect.init(x: 0, y: height, width: kScreenWidth, height: kScreenHeight), animated: false)
    }
    

    相关文章

      网友评论

          本文标题:UITableView 滚动到指定位置(scrollToRow

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