viewWillTransitionToSize y navigation incorrectaBar y statusBarFrame alturas

Estoy intentando get el área de dibujo visible para una subclass de GLKViewController. En iOS 7, determinaría la orientación y luego ajustaría [UIScreen mainScreen] .bounds.size en consecuencia. ¡Entonces restaré las alturas navigationBar y statusBarFrame y listo! – El tamaño real de mi área de dibujo.

Ahora estoy intentando actualizar para iOS 8 con viewWillTransitionToSize, sin embargo cuando giro el dispositivo (tengo UIInterfaceOrientationMaskAll activado), el tamaño que se pasa es incorrecto. De hecho, el ancho es correcto para la vista, pero no la altura (que implica la barra de navigation y las alturas de la barra de estado).

He visto un par de preguntas sobre SO que se relacionan, pero nada que realmente se ocupe de este problema, al less nada que me haya ayudado.

No me parece que esté haciendo algo interesante, corrígeme si me equivoco:

- (void)viewWillTransitionToSize : (CGSize) size withTransitionCoordinator : (id<UIViewControllerTransitionCoordinator>) coordinator { [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; NSLog(@"size changed : orig(%f,%f) mainScreen(%f,%f)", size.width, size.height, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height); [self updateViews:size]; } 

salidas para la transición al paisaje:

 size changed : orig(568.000000,256.000000) mainScreen(320.000000,568.000000) 

donde la altura pasada de viewWillTransitionToSize parece ser:

 320 - (2*32) = 256 

y luego la siguiente rotation a retrato:

 size changed : orig(320.000000,536.000000) mainScreen(568.000000,320.000000) 

donde la altura pasada de viewWillTransitionToSize parece ser:

 568 - 32 = 536 

32 es la altura de la barra de navigation en modo horizontal (si eso significa algo).

Entonces, mis preguntas son: ¿cómo obtiene viewWillTransitionToSize este tamaño? ¿Cómo se tienen en count las barras adicionales que cambian de tamaño o desaparecen según la orientación? Y lo más importante, ¿por qué está usando estas alturas incorrectas?

Al mirar los tamaños de fotogtwigs de vista viewWillTransitionToSize:withTransitionCoordinationar: es probable que obtenga los fotogtwigs antes de la actualización.

Mejor uso animateAlongsideTransition:completion: dentro de este método:

 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator { [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) { //update views here, eg calculate your view } completion:^(id<UIViewControllerTransitionCoordinatorContext> context) { }]; }