如何基于滚动动态增加UITableview的高度

时间:2017-01-23 13:29:54

标签: ios objective-c swift uitableview

我想在用户滚动到顶部时增加UITableView的高度,在用户向下滚动时减小高度。 我通过此代码完成了这种情况

if scrollView == tableView {
     print(scrollView.contentOffset.y)
     let height: CGFloat = scrollView.contentOffset.y+200
     let maxHeight: CGFloat = self.view.bounds.size.height - 64
     let minHeight:CGFloat = 200
     if height < maxHeight && height > minHeight {
         UIView.animateWithDuration(0.25, animations: {() -> Void in
            self.tblHeightCons.constant = height
            self.view.setNeedsUpdateConstraints()
          })
      }

 }

https://drive.google.com/file/d/0B9WA3RAMmfrKQlBVOG9NaEllRTQ/view

但我不想移动内容..

3 个答案:

答案 0 :(得分:2)

<强>更新即可。它实现了视频中的效果,并在范围内滚动时禁用移动的内容,并在滚动超出范围时启用内容移动。快速滚动问题也得到了解决:

public func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let maxHeight: CGFloat = self.view.bounds.size.height - 64
    let minHeight:CGFloat = 200
    var height = self.tblHeightCons.constant + scrollView.contentOffset.y

    if height > maxHeight {
        height = maxHeight
    }
    else if height < minHeight {
        height = minHeight
    }
    else{
        scrollView.contentOffset = CGPoint(x: 0, y: 0)
    }

    self.tblHeightCons.constant = height
}

答案 1 :(得分:0)

我使用以下方法实现此目的的最佳方法,将动态高度设置为tableview,并在tableView:numberOfRowsInSection:方法中为scrollview设置contentSize。

_commentsTable.frame = CGRectMake(self.commentsTable.frame.origin.x, self.commentsTable.frame.origin.y, self.commentsTable.frame.size.width,cellDynamicHeight*_commentArray.count) ;
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, self.scrollView.frame.size.height+kConstantHeight);

答案 2 :(得分:0)

这将根据tableview高度自动处理scrollview和tableview。

597 2733    2710    2687
597 2710    2688    2687    
597 2688    2713    2734