5

ho un piccolo problema qui. Ho due controller di visualizzazione sullo stesso storyboard (MainStoryboard -> Calc view Controller in modalità portrait e Calc view controller in modalità landscape). Quando ho inizialmente creato un bool per shouldAutoRotate ruotato, tuttavia, c'era "ed è ancora" un problema di rendering, in quanto alcuni pulsanti non erano nel posto che ci si aspetterebbe che fossero, in altre parole erano dappertutto modalità panoramica. Così ora ho creato 2 controller di vista in modalità orizzontale e principale. Quindi ora la chiave è passare da quei due controller a rotazione.Passando tra 2 controller di vista sullo stesso storyboard, a rotazione usando willAutorotateTo ... non funziona,

in CalculatorViewController.mi hanno
UPDATE
Ho notato che alcuni metodi sono stati eliminati da iOS 6 (e questo è quello che sto usando ora), dopo un po 'di ricerca ho trovato che in iOS 6 del " sorta di passaggio corretto "sarebbe questo

@synthesize portraitView, landscapeView; 

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 
-(NSUInteger)supportedInterfaceOrientations:toInterfaceOrientation 
{ 
    if(UIInterfaceOrientationMaskAllButUpsideDown) 
    { 
     if (UIInterfaceOrientationPortrait) 
     { 
      self.view = portraitView; 
     } 
     else if (UIInterfaceOrientationLandscapeLeft) 
     { 
      self.view = landscapeView; 
     } 

    } 
    return YES; 

}  

tuttavia anche i pensano sto usando metodi corretti relativi a iOS 6 ancora smusso ottengo il controllore corretta visione di essere chiamati rotazione

e in CalculatorViewController.h

@interface CalculatorViewController : UIViewController { 


    IBOutlet UIView *portraitView; // declaring view - portrait 
    IBOutlet UIView *landscapeView; // declaring view - landscape 
    //rest of irrelevant code below 

} 
@property (nonatomic, retain) UIView *portraitView; 
@property (nonatomic, retain) UIView *landscapeView; 

enter image description here semplicemente ignorare quei 2 controller bianchi ora sono irrilevanti. Invio foto per mostrare quei 2 view controller

Grazie per il vostro tempo

+0

Non esiste un metodo chiamato willAutorotateFromInterfaceOrientation :. È un refuso o non è nemmeno compilato? – rdelmar

+0

@rdelmar Emmm c'è un metodo se si guarda il - (bool) willAutorotate .... nel primo pezzo di codice? –

+0

Lo vedo nel tuo codice. Viene chiamato? Non riesco a trovare alcun metodo di questo tipo nella documentazione di Apple. Se esiste, deve essere pre-iOS 5. – rdelmar

risposta

3

ho fatto le cose in questo modo un paio di volte, ed è spesso più facile avere il vostro ViewController hanno una vista vuota. Quindi aggiungi la tua vista Orizzontale come sottoschermata principale in orizzontale, quindi rimuovila quando ruoti in verticale e così via. Se si prova ad avere VC separati, allora si avrà un groviglio di codice di salvataggio dello stato solo per facilitare la transizione.

Si può persino giocare con questo design avendo entrambi sia costantemente sottoview, e semplicemente mostrandoli/nascondendoli quando appropriato. Questo richiede più memoria, ma puoi fare delle belle animazioni di transizione.

In questo modo tutte le connessioni e la logica saranno in un unico VC e solo l'interfaccia cambierà.

+0

Sì, questo è quello che in realtà ho fatto perché era una soluzione un po 'più semplice credo a questo problema. –

Problemi correlati