2012-04-19 11 views
7

Ho avviato il modello Xcode usando GLKit ma la mia intenzione è di avere una finestra che mostri la parte OpenGL della vista e UIKit per i controlli.Posso utilizzare iOS GLKit senza utilizzare una visualizzazione a schermo intero?

GLKViewController viene fornito con un GLKView. Sono andato a IB e rimosso GLKView e aggiunto un UIView, mettendo un nuovo GLKView in cima alla dimensione che voglio. Quindi ho corretto i riferimenti a GLKView (self.view) e impostato il delegato di GLKView più piccolo al controller della vista.

ho avuto

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[GLKViewController loadView] loaded the "2-view-9XZ-07-hga" nib but didn't get a GLKView.' 

Poi ho guardato docs e scoprire che GLKViewController richiede GLKView come suo punto di vista. Nessuna sorpresa. Sì, sono nuovo in questo.

Qual è un buon modo per utilizzare GLKit con un GLKView più piccolo di quello a schermo intero? O sta mescolando UIKit e GLKit non è stato fatto?

(aggiornamento: un sacco di persone stanno trovando questa domanda, la risposta di Duncan, con vista del regolatore di contenimento, ha funzionato bene.)

risposta

8

È possibile, ma GLKit non lo rende evidente come.

Il problema è che GLKViewController è progettato in modo che la vista del contenuto sia una GLKView, come dici tu.

Hai due possibilità.

  1. Creare un GLKView e inserirlo in un normale controller di visualizzazione. Funziona bene

  2. Creare una GLKViewController con un GLKView come il suo contenuto, e renderlo una vista figlio di un altro controller della vista, utilizzando il nuovo supporto vista del regolatore padre/figlio in iOS 5.

+0

Grazie Duncan, genitore/il bambino è ciò a cui guarderò. –