Ho una vista che viene caricata in MainWindow.xib. È solo una vista con una visualizzazione a fotogrammi al suo interno che mostra un'immagine su tutto lo schermo (320 X 480). Quando i carichi applicazioni Mi visualizzano questo punto di vista e poi mi fanno unIPhone - UIView addSubview Gap in cima
[self.view addSubview:tabbarController.view];
Tab Bar Controller è solo un UITabBarController con 2 Visualizza controllori aggiunti ad esso. Quando aggiunge la vista del tabbarController alla sottoview, lascia una lacuna nella parte superiore di circa 20px. La mia app ha una barra di stato, ma in pratica è spazio per un'altra. Questo accade a meno che non aggiungo questo al mio controller di visualizzazione:
self.view.frame = CGRectMake(0, 0, 320, 480);
Qualcuno può spiegare questo. Stavo facendo
self.view = tabbarController.view;
ma mi hanno detto che non dovevo farlo. Quindi ora sto aggiungendo una sottoview, ma non capisco perché devo regolare il CGRect della mia vista per non mostrare il 20px.
Grazie per la spiegazione chiara. Forse dovrei tornare indietro e ristrutturare parte della mia app. Voglio fare le cose nel modo corretto, ma ho pensato che potrebbe essere meglio separare la logica del controller di visualizzazione dal delegato dell'app - quindi il mio controller di visualizzazione radice fa tutto ciò di cui ha bisogno. Questo spiegherebbe perché nel mio controller della vista di root, se ho fatto self.view = tabbarController.view invece di aggiungere come sottoview, non otterrei il divario. Bella risposta. Potrei votare di più se potessi. – Brian
Sembra che il tuo istinto sia andato bene qui. Questo è solo uno di quei limiti di design in Cocoa Touch che dobbiamo lavorare per ora. Ricorda però che non è necessario aggiungere il tabbarController.view alla tua finestra dal delegato dell'app. Puoi aggiungerlo nel tuo controller di visualizzazione se è lì che pensi che abbia più senso. È sufficiente avere accesso all'oggetto della finestra, tramite il metodo keyWindow, oppure impostandolo come proprietà sul controller in applicationDidFinishLaunching :. – cduhn
ma questo non significa che il tabbarcontroller.view sia ora una sottoview di window.view? Ma nel mio caso non è corretto ho una visualizzazione annuncio e quindi una seconda contentview. E sto aggiungendo il tabbarcontroller.view alla contentview. In questo modo il viewcontroller gestirà il contenuto/adview in base agli annunci. se aggiungo il tabbarcontroller.view alla finestra, non penso che sarò in grado di gestire le viste usando il mio viewcontroller. cosa ne pensi? – LolaRun