I\'m working on a keyboard for iOS 8 using Autolayout to place the buttons on the view.
When I\'m changing the layout using constraints, everything is appearing correctl
I encountered a very similar issue (upvoted question) and found beeef's answer to point in the right direction. Given that Apple's documentation says not to call layoutSubviews() directly, I instead did as follows (where mySubView is a direct subview of self.view):
override func viewDidLayoutSubviews() {
// self.view's direct subviews are laid out.
// force my subview to layout its subviews:
self.mySubView.setNeedsLayout()
self.mySubView.layoutIfNeeded()
// here we can get the frame of subviews of mySubView
// and do useful things with that...
}
Just FYI, in my case mySubView is a UIScrollView, and I need to get the frame of one of its subviews, such that I can set the contentOffset accordingly before the view appears. I'm not sure whether viewDidLayoutSubviews() is the best place to do this, but it ensures that mySubView has been laid out.