I created a UIScrollView in the storyboard, linked it as a property to the view controller, and am now trying to add some subviews with pagination. But, even though I set the dimensions in the storyboard graphically, the frame of the UIScrollView ends up being 0,0,0,0. Am I required to hardcode the dimensions even though I already specified them graphically in the storyboard?
Also, kind of related, is it possible to customize subviews in the storyboard to use in this scroll view? It seems that I cannot create such a view unless it is already within a controller. Since I only have one controller and potentially multiple views I want to set up graphically, how do I do this without having to do so programmatically?
I found out that when I access the scrollview in
viewWillAppear
, the frame will actually give the correct numbers. I previously tried this inawakeFromNib
andviewDidLoad
and got0,0,0,0
frame as well.What's weird is before Storyboard, you are able to get the correct frame dimensions in awakeFromNib. An example of this is in one of Apple's sample code PageControl.
So in short to answer the question, try accessing it from
viewWillAppear
(Assuming you created the UIScrollView in Storyboard).With storyboards viewDidLayoutSubviews is where you can get the size of all your views. viewWillAppear did not work for me and always returned (0,0,0,0);
You probably set the breakpoint on a line where the view was not setup yet. Try this:
With storyboards the outlets of a controller are not connected before viewDidLoad and the size of it is not set until viewWillAppear, see here:
http://cs193p.m2m.at/lecture-8/
So I think Enricos suggestion is correct. Just try putting the size-related stuff into viewWillAppear.
It's quite simple: Disable Use Autolayout in the Storyboard settings.