[update]iPhone non può ruotare film alla modalità orizzontale utilizzando MPMoviePlayerViewController
Come c'è stato consigliato ho cambiato tutti i controller di vista padre per sostenere tutti gli orientamenti. La mia struttura dell'app è la seguente: AppDelegate> RootViewController> Video> VideoDetails> MPMoviePlayerViewController.
Il video verrà riprodotto in orizzontale se cambio tutti questi per supportare tutti gli orientamenti. Ma sostenere tutti gli orientamenti non è quello che voglio e causa altri problemi. C'è qualche altro lavoro in giro o qualsiasi altra cosa che posso fare?
Grazie
[/ update]
Ho un app iPhone ritratto base che consente di visualizzare i video utilizzando una sottoclasse personalizzata di MPMoviePlayerViewController. Quando l'utente preme giocano creo un'istanza di questa classe e la presentano modale come segue:
- (IBAction) playPressed:(id)sender {
NSString *filepath = [[NSBundle mainBundle] pathForResource:self.currentVideoModel.videoFileName ofType:@"m4v"];
NSURL *fileURL = [NSURL fileURLWithPath:filepath];
// MovieViewController is just a simple subclass of MPMoviePlayerViewController
self.moviePlayerController = [[MovieViewController alloc] initWithContentURL:fileURL];
// full screen code.
[self.moviePlayerController.moviePlayer setScalingMode:MPMovieScalingModeFill];
[self.moviePlayerController.moviePlayer setFullscreen:TRUE];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayerController];
[self presentMoviePlayerViewControllerAnimated:self.moviePlayerController];
}
Il problema è che si gioca bene in verticale, ma quando accendo l'iPhone in orizzontale la riproduzione del video ancora in verticale e non paesaggio :(Tutti i controller di vista in app supportano solo orientamento verticale
mio MPMoviePlayerViewController sottoclasse sovrascrive solo il seguente metodo per consentire cambiamenti di orientamento, ma non ha alcun effetto:.
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
ho ancheprovato a ruotare il video a livello di programmazione ma, senza fortuna, rimane sempre in modalità verticale.
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI/2)];
return true;
}
else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI * 2)];
return true;
}
else if (toInterfaceOrientation == UIInterfaceOrientationPortrait) {
[self.view setTransform:CGAffineTransformIdentity];
return true;
}
else return false;
}
Il supporto per la rotazione è * un po '* di tipo gerarchico. Quindi, se stai presentando un controller di un lettore di film e non ti permette di ruotare, il mio primo passo di debug sarebbe controllare OGNI controller di visualizzazione che porta al tuo lettore di film per il metodo 'shouldAutorotate..' e renderlo semplicemente' return YES; '(puoi farlo in modo incrementale se vuoi risparmiare ulteriore fastidio in seguito).Quindi, cambiali uno alla volta in verticale finché non si blocca in verticale, e sai quali "UIKit" sta controllando quando cerchi di ruotare il tuo. Vai da lì. – darvids0n
@ darvids0n grazie. Non voglio davvero che nessun'altra vista supporti qualcosa di diverso dal ritratto, ma immagino che farò un tentativo per vedere cosa succede. – bennythemink
@ darvids0n Ho aggiornato la mia domanda. c'è qualcosa che puoi suggerire? molte grazie per qualsiasi consiglio. – bennythemink