Questa soluzione spiega come controllare l'orientamento sui singoli controller di vista, a condizione che siano gestiti da un controller di navigazione.
In Xcode 5, creare un nuovo file di tipo "Categoria Objective-C", impostarlo su "Category" su "rotation" e scegliere "UINavigationController" come "Category on".
Una nuova coppia di file apparirà nel progetto, aventi le seguenti nomi: UINavigationController + rotation.h UINavigationController + rotation.m
Nel file .m, scrivere il codice seguente:
- (BOOL) shouldAutorotate
{
return [[self topViewController] shouldAutorotate];
}
- (NSUInteger) supportedInterfaceOrientations
{
return [[self topViewController] supportedInterfaceOrientations];
}
In questo modo, il controller di navigazione consentirà al controller di vista superiore corrente di determinare la politica di orientamento.
Quindi, in ciascun controller di visualizzazione specifico gestito dal controller di navigazione, è possibile ignorare i due metodi relativi all'orientamento.
Per esempio, se un determinato controller di vista deve apparire solo in orientamento verticale:
- (BOOL) shouldAutorotate
{
return NO;
}
- (NSUInteger) supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
Assicurarsi che l'orientamento desiderato è uno di quelli impostato nelle informazioni distribuzione del progetto. Spero che questo sia sufficientemente dettagliato e possa essere d'aiuto.
fonte
2014-02-04 17:07:02
Sarebbe possibile aggiungere del codice che mostri la soluzione? – rkh
@rkh Hai bisogno del codice per creare una sottoclasse che sovrascriva una funzione? –
No, volevo solo spiegare la tua soluzione a Victor "in codice" dato che sembra un nuovo utente ... Io sono buono :) – rkh