I have a UINavigationController
with a root UIViewController
("root").
The root view controller pushes another UIViewController
"child". When the "child" UIViewController
is on the screen , I rotate the device and expect the "root" view controller to resize accordingly but this isn't happening. After putting a breakpoint in the root view controller:
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}
I see that the size is wrong and the root view controller doesn't adjust properly to the change.
Has any one experienced this behaviour?
The code is as so:
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
/// The size is wrong if this view controller is off screen
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Here is a print screen of the NSLog of the size after rotating the device - This is from the simulator but the behaviour is the same on the device.
Same issue on my project. It seems that UINavigationController and UITabBarController (maybe all viewController?) give to there children the wrong size when you call :
'[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];'
I fixed the issue by overriding 'viewWillTransitionToSize:withTransitionCoordinator:' in my tabBarController and navigation bar controller subclass (same code in both).
- (void)viewWillTransitionToSize:(CGSize)size
withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
for (UIViewController* aViewController in self.viewControllers)
{
[aViewController viewWillTransitionToSize:size
withTransitionCoordinator:coordinator];
}
if ([self presentedViewController])
{
[[self presentedViewController] viewWillTransitionToSize:size
withTransitionCoordinator:coordinator];
}
}
I'm not sure this is the best way, if you found something better, tell me please.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With