Sto cercando di ottenere l'area di disegno visibile per una sottoclasse di GLKViewController. In iOS 7, determinerei l'orientamento e quindi regolare [UIScreen mainScreen] .bounds.size di conseguenza. Quindi vorrei sottrarre le altezze della barra di navigazione e statusBarFrame e voilà! - la dimensione effettiva della mia area di disegno.viewWillTransitionToSize e navigazione errataBar e statusBarFrame heights
Ora sto cercando di aggiornare per iOS 8 con viewWillTransitionToSize, tuttavia quando ruoto il dispositivo (ho UIInterfaceOrientationMaskAll su), la dimensione che viene passata è errata. Infatti, la larghezza è corretta per la vista, ma non l'altezza (che coinvolge le altezze della barra di spostamento e della barra di stato).
Ho visto un paio di domande su SO che riguardano ma nulla che in realtà si occupa di questo problema, almeno nulla che mi ha aiutato.
Questo non mi sembra di fare qualcosa di interessante, mi corregga se sbaglio:
- (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];
}
uscite per la transizione al paesaggio:
size changed : orig(568.000000,256.000000) mainScreen(320.000000,568.000000)
dove l'altezza è passato da viewWillTransitionToSize sembra essere:
320 - (2*32) = 256
e quindi la rotazione successiva al ritratto:
size changed : orig(320.000000,536.000000) mainScreen(568.000000,320.000000)
dove compare l'altezza passata da viewWillTransitionToSize per essere:
568 - 32 = 536
sembra essere l'altezza della barra di navigazione in modalità orizzontale (se questo significa qualcosa).
Quindi le mie domande sono: come fa viewWillTransitionToSize ad avere questa dimensione? Come tiene conto delle barre supplementari che cambiano le dimensioni o scompaiono a seconda dell'orientamento? E, soprattutto, perché sta usando queste altezze errate?
questo è lo stesso problema che ho a che fare con la società - io ottenere esattamente gli stessi numeri si stanno ottenendo quando i miei rotazione dello schermo, con la stessa discrepanza (32 o 64 punti). Il problema per me è che sto usando l'argomento 'dimensione' per ottenere la nuova altezza e larghezza della vista e quindi usare quei numeri per calcolare una dimensione di sottomenu. – Natalia