First of all, using [label sizeToFit];
will reduce the width of your Label, that's why it is always at the left. That's what it is supposed to do, if you don't want to reduce it's size and maintain the label's width to the page's width, then don't use it.
Your scroll's pages problem happens because the scroll's content doesn't change when you resize your scrollview. What you need to do is, when orientation changes (can be in (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
):
after new frame dimensions are set, adjust the content size of your scrollview (pages now have smaller height and bigger width).
change the frame of your subviews to the new orientation (that is, assigning your pages the new bounds of your scrollview and reassign origin.x)
if needed, adjust the content in each of your pages
scroll to the page you were currently watching:
code (from a pager component I have, may need to adapt something for you to work):
-(void) scrollToCurrentPage {
CGRect frameCurrent = scrollview.frame;
frameCurrent.origin.x = _currentPageNumber*frameCurrent.size.width;
frameCurrent.origin.y = 0;
//_currentPage is a reference to the page that was being watched before rotation
_currentPage.frame = frameCurrent;
[_container scrollRectToVisible: frameCurrent animated: NO];
}