首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在UITableView中滚动时移动视图

在UITableView中滚动时移动视图
EN

Stack Overflow用户
提问于 2014-08-19 08:41:26
回答 8查看 33.4K关注 0票数 29

我有一个下面有UITableViewUIView

我想要做的是当用户开始在表格中滚动时,将UITableView上方的视图向上移动(离开),以便为UITableView提供更多空间(并在再次向下滚动时向下移动)。

我知道这通常是通过表头视图完成的,但我的问题是我的表视图在选项卡内(实际上它是使用TTSliddingPageviewcontroller实现的侧滚页面视图)。因此,虽然我只有一个顶级UIView,但有三个UITableView

是否有可能手动完成此操作?我的第一个想法是把所有东西都放在UIScrollView里,但是根据苹果的文档,人们永远不应该把UITableView放在UIScrollView里,因为这会导致不可预测的行为。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-08-19 08:49:57

因为UITableViewUIScrollView的子类,所以您的表视图的委托可以接收UIScrollViewDelegate方法。

在表视图的委派中:

代码语言:javascript
复制
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    static CGFloat previousOffset;
    CGRect rect = self.view.frame;
    rect.origin.y += previousOffset - scrollView.contentOffset.y;
    previousOffset = scrollView.contentOffset.y;
    self.view.frame = rect;
}
票数 20
EN

Stack Overflow用户

发布于 2016-10-07 19:38:15

Swift的解决方案(在滚动视图启用反弹的情况下工作得很好):

代码语言:javascript
复制
 var oldContentOffset = CGPointZero
 let topConstraintRange = (CGFloat(120)..<CGFloat(300))

 func scrollViewDidScroll(scrollView: UIScrollView) {

    let delta =  scrollView.contentOffset.y - oldContentOffset.y

    //we compress the top view
    if delta > 0 && topConstraint.constant > topConstraintRange.start && scrollView.contentOffset.y > 0 {
        topConstraint.constant -= delta
        scrollView.contentOffset.y -= delta
    }

    //we expand the top view
    if delta < 0 && topConstraint.constant < topConstraintRange.end && scrollView.contentOffset.y < 0{
        topConstraint.constant -= delta
        scrollView.contentOffset.y -= delta
    }

    oldContentOffset = scrollView.contentOffset
 }
票数 30
EN

Stack Overflow用户

发布于 2015-07-01 17:56:54

更简单、更快速的方法

代码语言:javascript
复制
- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{

    CGRect rect = self.view.frame;
    rect.origin.y =  -scrollView.contentOffset.y;
    self.view.frame = rect;

}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25374090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档