iOS:在用户拖拽时拉伸/调整UITableView标头的大小?

Kin*_*gon 28 objective-c uitableview uiscrollview uiimageview ios

使用故事板,我已经放置了一个imageView作为我的tableView's headerView内部ViewController.

这就是我的故事板的设置方式:

在此输入图像描述

根据用户正在查看的数据,viewController将显示或隐藏headerView.我的问题是,当headerView可见并且用户向下拖动时tableView,我如何能够imageView同时调整navigationBartableView调整大小以覆盖其间的空间?

这就是它目前的作用:

在此输入图像描述

但这就是我想要的:

在此输入图像描述

任何帮助将不胜感激.我看过视差库,但是没有人支持sectionTitles,我也不一定会选择视差效果.当用户向上滚动时,我希望它弹回到regularView而不是隐藏headerView.谢谢!

更新:

我已按照Dany发布的建议进行了以下操作并完成了以下操作:

-(void)scrollViewDidScroll:(UIScrollView*)scrollView {

CGRect initialFrame = CGRectMake(0, 0, 320, 160);

if (scrollView.contentOffset.y < 0) {

    initialFrame.size.height =! scrollView.contentOffset.y;
    childHeaderView.frame = initialFrame;
} }
Run Code Online (Sandbox Code Playgroud)

childHeaderView是一个imageView,出于某种原因,当我向下拖动时,图像向上移动(就像在navBar后面的一半)并且不返回.任何建议将不胜感激!!谢谢!

pet*_*are 7

我最近发布了一篇关于使用可能有所帮助的约束来完成此事的博客文章,结果证明这是非常直接的.

这是链接:使用约束在UIScrollView上创建视差效果

  • 你发布链接是正确的,但是如果你真的需要它,你可以去:http://web.archive.org/web/20160326225445/http://blog.domesticcat.com.au/ios/2014/ 3月19日/创建视差效果的上的UIScrollView-使用-简单的约束/ (2认同)

dan*_*ata 5

首先,您应该UIImageView从标题中删除它并将其作为简单添加UIImageViewUITableView那时,因为UITableViewDelegate协议符合UIScrollViewDelegate协议,您可以实现该scrollViewDidScroll:方法来检查何时tableView向下滚动并具有bouncing效果.这样的事情:

-(void)someInitMethod {
   initialFrame = yourHeaderView.frame;
}
-(void)scrollViewDidScroll:(UIScrollView*)scrollView {
    if(scrollView.contentOffset.y < 0) {
       initialFrame.size.height -= scrollView.contentOffset.y;
       yourHeaderView.frame = initialFrame;
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,请确保您设置适当的contentMode为您UIImageView.另外我认为这个实现会产生弹跳效果,但我不确定,因为我现在无法测试它,但我认为这对你来说是一个很好的起点.

  • 数学是不正确的,这将使它看起来不稳定,因为它不断增加更大和更大的数字而不是差异的增量. (2认同)