iOS8 - 在UINavigationController上推送UIViewController并旋转设备后,以前的视图控制器中的大小错误

Avn*_*arr 7 objective-c uiviewcontroller uinavigationcontroller ios viewwilltransitiontosize

我有一个UINavigationControllerUIViewController("根").

根视图控制器推送另一个UIViewController"子".当"孩子" UIViewController出现在屏幕上时,我会旋转设备并期望"根"视图控制器相应地调整大小,但这不会发生.在根视图控制器中放置断点后:

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}
Run Code Online (Sandbox Code Playgroud)

我看到大小错误,根视图控制器无法正确调整更改.

有没有人经历过这种行为?

代码如下:

@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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这是旋转设备后大小的NSLog的打印屏幕 - 这是来自模拟器,但设备上的行为是相同的.

在此输入图像描述

gab*_*ler 0

可能只有窗口旋转。如果你像这样打印它,根据我的测试,它总是正确的。

[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
 {

 } completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
 {
     UIWindow *screen = [[[UIApplication sharedApplication] delegate] window];
     CGSize mainWindowSize = screen.bounds.size;
     NSLog(@"Main window size is %@",NSStringFromCGSize(mainWindowSize));

 }];
Run Code Online (Sandbox Code Playgroud)