You could have a UIView which height is 0 and then expand it when clicking on your button :
UIView *expandableView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,0)];
expandableView.backgroundColor = [UIColor redColor];
expandableView.alpha = 0;
And then when you click on your button you do an animation
[self.view addSubview:expandableView];
CGRect newFrame = expandableView.frame;
newFrame.size.height = 100;
//If this is the first view you would have to move the second header below
CGRect newHeaderFrame = header2.frame;
newHeaderFrame.origin.y += expandableView.frame.size.height;
[UIView animateWithDuration:0.3 animations:^{
expandableView.frame = newFrame;
expandableView.alpha = 1;
header2.frame = newHeaderFrame;
}];
And when you want to shrink it :
CGRect newFrame = expandableView.frame;
newFrame.size.height = 0;
//If this is the first view you would have to move back to header 2
CGRect newHeaderFrame = header2.frame;
newHeaderFrame.origin.y -= newFrame.size.height;
[UIView animateWithDuration:0.3 animations:^{
expandableView.frame = newFrame;
expandableView.alpha = 0;
header2.frame = newHeaderFrame;
} completion:^{
[expandableView removeFromSuperview];
}];