Avn*_*arr 7 objective-c uiviewcontroller uinavigationcontroller ios viewwilltransitiontosize
我有一个UINavigationController根UIViewController("根").
根视图控制器推送另一个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的打印屏幕 - 这是来自模拟器,但设备上的行为是相同的.

可能只有窗口旋转。如果你像这样打印它,根据我的测试,它总是正确的。
[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)