Oggi una piccola chicca non documentata dell’SDK per iphone. Abbiamo visto come sia semplice visualizzare un video sul nostro melafonino, ma preferiremmo visualizzarlo in verticale piuttosto che orizzontale? Nessun problema. Esiste una funzione non documentata della classe MPMoviePlayerController che ci permette di visualizzare i video anche in modalità portrait.
Create il vostro progetto e aggiungere il framwork MediaPlayer. Non dimenticate di inserire anche
#import
in testa alla classe che ospiterà i nostri video.
Io per questo esempio ho creato una piccola funzione
- (IBAction)playMovie:(NSString *)moviename movietype:(NSString*)movietype verticalplayer:(BOOL)vertical
{
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:moviename ofType:movietype]isDirectory:NO];
MPMoviePlayerController *mp;
mp = [[MPMoviePlayerController alloc] initWithContentURL: url];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:mp];
[mp play];
if (vertical) {
[mp setOrientation: UIDeviceOrientationPortrait animated:NO];
}
}
Questa funzione accetta come parametri il nome del file video, la sua estensione e un boolean che indica se vogliamo visualizzare il video in orizzontale o verticale.
Aggiungete al vostro progetto un file video (io ho usato un file che si chiama 0009.m4v) e create un semplice pulsante che esegua questa funzione:
- (IBAction)buttonPressed:(id)sender
{
[self playMovie:@"0009" movietype:@"m4v" verticalplayer:TRUE];
}
A questo punto potreste già eseguire il programma e godervi il video in verticale.

Questo è un piccolo spezzone di codice, io ho aggiunto al mio progetto alcune funzionalità di cui ancora non abbiamo parlato, ma chi è curioso può scaricare l’intero sorgente da qui.
Un ringraziamento a Gianpaolo Fragale per aver, a sua insaputa :), fornito il video usato in questo esempio.












9 Responses to “T#058 – Avviare e visualizzare un video in modalità verticale [portrait]”
26 Giugno 2010
FraE far vedere i video senza visualizzare il player come succede nei giochi?
26 Giugno 2010
Staff devAPPIn realtà nei giochi il player c’è 😉 Se ci pensi, al tap sul display appaiono i comandi per stoppare il video e passare subito al gioco, per alzare il volume, mettere in pausa, ecc- insomma, il player..
La differenza sta nel fatto che i video, nei giochi che intendi tu, partono in automatico all’avvio del gioco, come se fossero una sorta di splashscreen. Se è questo di cui hai bisogno una soluzione potrebbe essere avviare il video nel metodo viewDidLoad, trovi un esempio qui:
http://www.devapp.it/wordpress/t054-mostrare-un-video-durante-lavvio-delle-nostre-applicazioni-iphone.html
26 Giugno 2010
ignaziocin effetti stavo rispondendo una cosa simile, io non uso molti giochi ma mi pare di aver sempre visto il player..se conosci qualche gioco che invece li visualizza in modo nativo puoi linkarlo?
credo che comunque sia fattibile, certo bisogna reinventare la ruota, riscrivere un player video per cocoa…
30 Giugno 2010
fastl’app di esempio crasha con l’SDK del firmware 4.0
30 Giugno 2010
Ignaziocsi, notavo che nel firmware 4 le cose sono cambiate un pochino.
25 Agosto 2010
Albertocredo si riferisca a quegli splash screen animati.
un esempio su tutti:
Asphalt 5 (il gioco)
Nel dettaglio:
1. all’avvio si intravede il loghettino in basso a destra (che dura un istante, come fosse un preloader)
2. scompare il loghetto e parte un’animazione con audio (senza controlli per il video) del logo gameloft che si crea partendo da dei fasci di luce. NON SKIPPABILE.
3. parte il video (con i normali controlli del player video)
farebbe comodo anche a me sapere come far si che questi steps avvengano (in alternativa anche senza il punto 3)
grazie
16 Febbraio 2011
fabioe se volessi riprodurre un video dal web…tipo su http://mioserver.it/video-mp4….
questo non riesco proprio…
14 Novembre 2011
RobertoMi sa che MPMoviePlayerController non ha il metodo setOrientation….
14 Novembre 2011
Ignaziocquesto articolo è piuttosto vecchio, può essere che abbiano cambiato qualcosa, ma ti assicuro che funzionava.