iOS: Stretching / Resizing UITableView Header As The User Drags Down?

KingPolygon picture KingPolygon · Jun 11, 2013 · Viewed 19.7k times · Source

Using storyboard, I have placed an imageView as my tableView's headerView inside a ViewController.

This is how my storyboard is set up:

enter image description here

Depending on what data the user is viewing, the viewController will either show or hide the headerView. My question is, that when the headerView is visible and the user drags down on the tableView, how can I have the imageView stick to both the navigationBar and the tableView as it resizes to cover the space in between?

This is what it currently does:

enter image description here

But this is what I'm going for:

enter image description here

Any help would be greatly appreciated. I've looked at parallax libraries, but none support sectionTitles, and I'm not necessarily going for the parallax effect either. When the user scrolls up, I want it to bounce back to the regularView and not hide the headerView. Thanks!

UPDATE:

I have followed the advice posted by Dany below and have done the following:

-(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;
} }

childHeaderView is an imageView and for some reason when I drag down, the image moves up (like half of it behind the navBar) and doesn't return. Any advice would be greatly appreciated!! Thanks!

Answer

petehare picture petehare · Mar 24, 2014

I recently posted a blog post about accomplishing this using constraints which might help, turns out it was quite straight forward.

Here is the link: Creating parallax effect on UIScrollView using constraints