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
Yes! I solved that problem myself.
I'm not sure if I got it right, but that's what I think:
My solution now was to manually call .layoutSubviews() on all my views which contains all my buttons of my keyboard. After that, I get the size of all the buttons I want.
Please correct me if I'm wrong.
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.