Since willAnimateRotationToInterfaceOrientation:duration:
is deprecated in iOS8, one needs to use viewWillTransitionToSize:withTransitionCoordinator:
instead.
However, this method does not get called in my view controller on iOS8. Is there anything else, I need to implement, in order for this callback to work?
I cannot find anything in the documentation. The only thing I could find, was that it belongs to the new UIContentContainer
protocol. However, even if I am adding this to the protocols of my controller explicitly, it does not work.
Any ideas?
I know this question is a bit old at this point but I think the issue might be solved a different way for some who may come across it. If you are trying to load a view that is part of a DIFFERENT controller by using
addSubview(controller.view)
, you need to also add that controller to the parent as well (possibly the view you are adding to's controller). If you do not add the controller to a parent you will never receive the updates for size changes. We later found out the reason for Apple's API change; with the iPad pro, your SizeClass can change without rotation with the multi-tasking ability. This will also call the method:In the parent class, if you override the above method, make sure you call super as well or you will just find another way to beat your head against a wall...
As per the docs, remember to call
super
Otherwise child view controllers will not get the message forwarded on to them.
The
viewWillTransitionToSize:withTransitionCoordinator:
seems to only work if the interface is actually going to change size, meaning we have rotated 90 degrees. If you have a mask on your layout that only allows landscape, when rotation 180 degrees, the interface size doesn't change, so this method doesn't seem to be called.I have worked around this in my app by instead registering to the
UIDeviceOrientationDidChangeNotification
notification like:(In my view controller's
viewWillAppear
):(An in my
viewWillDisappear
[remember to unsubscribe])My
deviceOrientationDidChange:
looks like: