7

UINavigationControllerルートUIViewController(「ルート」)があります。

ルート ビュー コントローラーは別のUIViewController「子」をプッシュします。「子」UIViewControllerが画面上にある場合、デバイスを回転させ、それに応じて「ルート」View Controllerのサイズが変更されることを期待していますが、これは起こっていません。ルート ビュー コントローラーにブレークポイントを配置した後:

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

サイズが正しくなく、ルート ビュー コントローラーが変更に適切に対応していないことがわかります。

この動作を経験した人はいますか?

コードは次のとおりです。

@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

ここに画像の説明を入力

これは、デバイスを回転させた後のサイズの NSLog の印刷画面です。これはシミュレーターのものですが、動作はデバイス上で同じです。

ここに画像の説明を入力

4

2 に答える 2

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));

 }];
于 2014-11-12T15:57:13.970 に答える