Video: Hvordan velge rett iPad? - Elkjøp forklarer 2024
Nedenfor viser vi hvordan du arbeider med bilder i iOS-apper, på et abstraksjonsnivå som ligner på videoopptak. Begynn med å vise deg hvordan variabler initialiseres i ViewDidLoad-metoden (spesifikt noter initialiseringen av medlemsvariabelen localImage).
- (void) viewDidLoad {[super viewDidLoad]; // Gjør noe ekstra oppsett etter at du har lastet opp visningen. NSString * imagePath = [[NSBundle mainBundle] pathForResource: @ "Images. Bundle / BookFront" ofType: @ "png"]; localImage = [[UIImage tildeling] initWithContentsOfFile: imagePath];}
Her ser du hvordan bilder vises:
- (IBAction) showImage: (id) avsender {imageView. image = localImage; [imageView setNeedsDisplay];}
Endelig er her takeImage-metoden som inneholder kode for å ta bildet:
- (IBAction) takeImage: (id) avsender {UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init]; imagePicker. sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker. mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeImage, null]; imagePicker. delegere = selv; [[UIApplication sharedApplication] setStatusBarHidden: YES]; [self presentViewController: imagePicker animert: JA ferdigstillelse: null];}
Koden for å ta et stillbilde er nesten identisk med det for opptak av en video. Den eneste forskjellen er at egenskapen mediaTypes av imagePicker-objektet er satt til kUTTypeImage (mens den er satt til kUTTypeMovie når du spiller inn en video).
Nå er du sannsynligvis kjærlig kjent med bruken av visningskontrolleren som et delegatobjekt til imagePicker og med følgende to metoder: imagePickerControllerDidCancel og didFinishPickingMediaWithInfo. Dette bildetPickerControllerDidCancel kalles når brukeren kansellerer operasjonen:
- (void) imagePickerControllerDidCancel: (UIImagePickerController *) plukkeren {[[UIApplication sharedApplication] setStatusBarHidden: NO]; [picker dismissViewControllerAnimated: YES completion: nil];}
Som du kan se, ble didFinishPickingMediaWithInfo kalt etter at bildet er tatt. Her settes det nylig tatt bildet inn i bildevisningen til bildevisningskontrollen.
- (void) imagePickerController: (UIImagePickerController *) plukkeren didFinishPickingMediaWithInfo: (NSDictionary *) resultater {localImage = (UIImage *) [results objectForKey: UIImagePickerControllerOriginalImage]; bildeVis. image = localImage; [imageView setNeedsDisplay]; [[UIApplication sharedApplication] setStatusBarHidden: NO]; [picker dismissViewControllerAnimated: YES completion: nil];}
Koden for bruk av videoopptakeren i en app og koden for å ta bilder, samt koden for sending av e-post og SMS, er svært lik strukturelle.I begge tilfeller blir et objekt av en oppgavespesifikk visningsregulator opprettet av visningskontrolleren som for øyeblikket kjører.
I e-post-saken er det MFMailComposeViewController; I SMS-saken er det MFMessageComposeViewController; og i videoopptak og bildeopptakssaker er det UIImagePickerController. Den nåværende visningskontrollen setter seg selv som en delegat i den oppgavespesifikke visningsregulatoren. Endelig presenteres den oppgavespesifikke kontrolleren, og den nåværende visningskontrollen går ut.
Når den oppgavespesifikke visningsregulatoren (det vil si forekomsten av UIImagePickerController, MFMailComposeViewController eller MFMessageComposeViewController), blir delegertmetoden til den opprinnelige visningsregulatoren kalt, enten for å behandle dataene som returneres av opptakeren eller kameraet eller for å håndtere feil og kanselleringer.