Domanda

In IOS6, shouldAutorotateToInterfaceOrientation è deprecato.Ho provato a utilizzare supportedInterfaceOrientations e shouldAutorotate per rendere l'app funziona correttamente per l'autorotazione ma non è riuscita.

Questo viewcontroller non voglio ruotare, ma non funziona.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
.

Qualche idea? Grazie per qualsiasi aiuto in anticipo!

È stato utile?

Soluzione

ha capito.

1) UinavigationController sottoclassificato (il ViewColler superiore della Gerarchia prenderà il controllo dell'orientamento). L'ha impostato come self.window.rootviewcontroller.

- (BOOL)shouldAutorotate
{
    return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return self.topViewController.supportedInterfaceOrientations;
}
.

2) Se non si desidera che il controller di visualizzazione ruota

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
.

3) Se vuoi che sia in grado di ruotare

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

-(BOOL)shouldAutorotate
{
    return YES;
}
.

BTW, in base alle tue esigenze, un altro metodo correlato:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
     return UIInterfaceOrientationMaskPortrait;
}
.

Altri suggerimenti

Se si utilizza un controller della barra di tabulazione anziché un controller di navigazione come controller di root, è necessario per sottoclasse utabbarcontroller di sottoclassi.

Anche la sintassi sarà diversa.Ho usato quanto segue con successo.Ho quindi usato gli esempi sopra riportati con successo sui controller di vista che volevo ignorare.Nel mio caso volevo che la schermata principale non ruoti, ma ho avuto uno schermo delle FAQ con film che volevo naturalmente abilitare la vista del paesaggio.Ha funzionato perfettamente!Basta notare la modifica della sintassi su self.modalviewcontroller (riceverai un avviso del compilatore se si tenta di utilizzare la sintassi per un controller di navigazione.) Spero che questo aiuti!

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (BOOL)shouldAutorotate
{
    return self.modalViewController.shouldAutorotate;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return self.modalViewController.supportedInterfaceOrientations;
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top