trovato.
Aveva lo stesso problema - ecco cosa ho fatto. Suggerirei di aggiungere il codice al progetto uno alla volta per vedere esattamente come funziona.
Primo: ho messo le cose in modalità verticale.
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
Quindi ho spostato il film sulla barra di stato.Nota - questo presuppone che il video ha un rapporto di formato 4x3
theVideo = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL fileURLWithPath : path]];
float aspectRatio = (3.0f/4.0f);
float theMovieHeight = [self view].bounds.size.width * aspectRatio;
[[theVideo view] setFrame:(CGRectMake(0, [self view].bounds.size.height - theMovieHeight, [self view].bounds.size.width, theMovieHeight))];
Poi, nel luogo in cui l'applicazione si avvia (nel mio progetto, è nella funzione didFinishLaunchingWithOptions
) - in ogni caso, è sufficiente accedere al oggetto finestra.
float aspectRatio = (3.0f/4.0f);
float theMovieHeight = self.window.bounds.size.width * aspectRatio;
float theSpaceAboveTheMovie = self.window.bounds.size.height - theMovieHeight;
float whereTheMovieShouldBeCentered = (self.window.bounds.size.height - theMovieHeight)/2;
CGAffineTransform theTransform = CGAffineTransformMakeTranslation(0,0);
theTransform = CGAffineTransformScale(theTransform, 1.0f/aspectRatio, 1.0f/aspectRatio);
theTransform = CGAffineTransformTranslate(theTransform, -whereTheMovieShouldBeCentered, 0);
theTransform = CGAffineTransformRotate(theTransform, M_PI/2);
theTransform = CGAffineTransformTranslate(theTransform, 0, -theSpaceAboveTheMovie);
[self.window setTransform:theTransform];
Ricordare che le trasformazioni affini vengono eseguite in ordine inverso. Quindi, se volete vedere quello che ogni trasformata sta facendo (vi consiglio si dovrebbe), commentare i primi tre
Qui si dovrebbe vedere la barra di film e lo stato centrato sulla pagina
// theTransform = CGAffineTransformScale(theTransform, 1.0f/aspectRatio, 1.0f/aspectRatio);
// theTransform = CGAffineTransformTranslate(theTransform, -whereTheMovieShouldBeCentered, 0);
// theTransform = CGAffineTransformRotate(theTransform, M_PI/2);
theTransform = CGAffineTransformTranslate(theTransform, 0, -theSpaceAboveTheMovie);
Poi il primo due
Qui si dovrebbe vedere la barra di film e lo stato ruotato e non più centrato
// theTransform = CGAffineTransformScale(theTransform, 1.0f/aspectRatio, 1.0f/aspectRatio);
// theTransform = CGAffineTransformTranslate(theTransform, -whereTheMovieShouldBeCentered, 0);
theTransform = CGAffineTransformRotate(theTransform, M_PI/2);
theTransform = CGAffineTransformTranslate(theTransform, 0, -theSpaceAboveTheMovie);
Qui si dovrebbe vedere ruotata e centrata
// theTransform = CGAffineTransformScale(theTransform, 1.0f/aspectRatio, 1.0f/aspectRatio);
theTransform = CGAffineTransformTranslate(theTransform, -whereTheMovieShouldBeCentered, 0);
theTransform = CGAffineTransformRotate(theTransform, M_PI/2);
theTransform = CGAffineTransformTranslate(theTransform, 0, -theSpaceAboveTheMovie);
E con loro tutto, è ruotato e fullscreen
È possibile scaricare il mio codice di esempio here.
sto vivendo lo stesso problema. Ancora nessuna soluzione? – samvermette
Anch'io. Qualcuno ha funzionato? – V1ru8
Hai ricevuto una risposta? – Jingwei