Video: Your body language may shape who you are | Amy Cuddy 2024
Denne delen begynner med å vise deg hvordan du bruker en abstraksjon på høyt nivå, MPMoviePlayerViewController-klassen, for å spille av video i en iOS-app. Her er koden (i videovisningskontrollen, fra filen TTTVideoViewController. M):
- (IBAction) playVideo: (id) avsender {MPMoviePlayerViewController * moviePlayer = [[MPMoviePlayerViewController alloker] initWithContentURL: movieURL]; [self presentMoviePlayerViewControllerAnimated: moviePlayer];}
Enkelhet selv! Alt du trenger er en nettadresse som peker på en filmfil på filsystemet eller til en Internett-URL som du kan instantiere filmspilleren til. Spillernes brukergrensesnitt håndterer stopp, start og så videre.
Medlemsbildet movieURL er satt i viewDidLoad-metoden som kalles etter at skjermbildet er initialisert for denne visningsregulatoren (en prøvefilm lagres nå i en ressursfil med navnet Video. Bundle), som vist her:
- (void) viewDidLoad {[super viewDidLoad]; // Gjør noe ekstra oppsett etter at du har lastet opp visningen. NSString * videoPath = [[NSBundle mainBundle] pathForResource: @ "Videoer. Bundle / SampleVideo" ofType: @ "MOV"]; movieURL = [NSURL fileURLWithPath: videoPath];}
Følgende eksempel viser deg hvordan du bruker en abstraksjon som er ett nivå lavere enn det forrige ved hjelp av lavere nivåmetoden kjent som recordVideo:
- (IBAction) recordVideo: (id) avsender {UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init]; imagePicker. sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker. mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, null]; imagePicker. delegere = selv; [[UIApplication sharedApplication] setStatusBarHidden: YES]; [self presentViewController: imagePicker animated: YES completion: null];}
Når denne metoden heter, vises en skjerm med et kamera grensesnitt. Ved hjelp av dette skjermbildet kan videoopptaket startes og stoppes. Når videoopptak er gjort, overfører dette skjermbildet kontrollen tilbake til visningsregulatoren.
Følgende to metoder er tilbakekallingsmetodene som kalles av Image picker (legg merke til hvordan videovisningskontrollen registrerer seg som en delegat med ImagePicker-objektet):
-
imagePickerControllerDidCancel kalles når opptaket er avbrutt. Den avviser bare plukkeren og viser iOS statuslinjen igjen.
- (void) imagePickerControllerDidCancel: (UIImagePickerController *) plukkeren {[[UIApplication sharedApplication] setStatusBarHidden: NO]; [picker dismissViewControllerAnimated: YES completion: null];}
-
didFinishPickingMediaWithInfo starter ved å vise iOS statuslinjen igjen og avviser plukkeren. Det sparer deretter den innspilte videoen i kameraets rulle på enheten. Endelig setter denne metoden medlemsvariabel movieURL for å peke på denne nye videoen, så når du velger Spill av video igjen, spiller den nylig innspilte filmen.
- (void) imagePickerController: (UIImagePickerController *) plukkeren didFinishPickingMediaWithInfo: (NSDictionary *) resultater {NSURL * moviePathURL = [results objectForKey: UIImagePickerControllerMediaURL]; NSString * moviePath = [moviePathURL path]; movieURL = moviePathURL; // Lagre i kamerarull hvis (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {UISaveVideoAtPathToSavedPhotosAlbum (moviePath, null, null, null);} [[UIApplication sharedApplication] setStatusBarHidden: NO]; [picker dismissViewControllerAnimated: YES completion: nil];}