Holy moly, I never in a million years would've guessed that viewDidLoad would not have the correct view dimensions set up in time to layout stuff from there. Putting my code in viewWillLayoutSubviews worked. What a nightmare API.
Topic:
UI Frameworks
SubTopic:
UIKit