} else {
NSLog(@"The camera does not support shooting videos.");
}
self.window = [[UIWindow alloc] initWithFrame:
[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π·Π°ΠΏΡΡΠΊΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π½ΠΎΠ²ΠΎΠΌ iPhone:
The front camera is available. // ΠΏΠ΅ΡΠ΅Π΄Π½ΡΡ ΠΊΠ°ΠΌΠ΅ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½Π°
The front camera is not equipped with a flash // ΠΏΠ΅ΡΠ΅Π΄Π½ΡΡ ΠΊΠ°ΠΌΠ΅ΡΠ°
// Π½Π΅ ΠΎΡΠ½Π°ΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π²ΡΠΏΡΡΠΊΠΈ
The rear camera is available. // Π·Π°Π΄Π½ΡΡ ΠΊΠ°ΠΌΠ΅ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½Π°
The rear camera is equipped with a flash // Π·Π°Π΄Π½ΡΡ ΠΊΠ°ΠΌΠ΅ΡΠ° ΠΎΡΠ½Π°ΡΠ΅Π½Π°
, // ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π²ΡΠΏΡΡΠΊΠΈ
The camera supports taking photos. // ΠΊΠ°ΠΌΠ΅ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ
, // ΡΠΎΡΠΎΡΠ½ΠΈΠΌΠΊΠΈ
The camera supports shooting videos. // ΠΊΠ°ΠΌΠ΅ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ
// Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π²ΠΈΠ΄Π΅ΠΎ
ΠΠΎΡ Π²ΡΠ²ΠΎΠ΄ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π½Π° ΡΠΈΠΌΡΠ»ΡΡΠΎΡΠ΅ iPhone:
The front camera is not available. // ΠΏΠ΅ΡΠ΅Π΄Π½ΡΡ ΠΊΠ°ΠΌΠ΅ΡΠ° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°
The rear camera is not available. // Π·Π°Π΄Π½ΡΡ ΠΊΠ°ΠΌΠ΅ΡΠ° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°
The camera does not support taking photos // ΠΊΠ°ΠΌΠ΅ΡΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ΅ΠΌΠΊΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ
The camera does not support shooting videos // ΠΊΠ°ΠΌΠ΅ΡΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ΅ΠΌΠΊΡ Π²ΠΈΠ΄Π΅ΠΎ
13.2. Π€ΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ (ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ ΡΡΡΡΠΎΠΉΡΡΠ²Π°). ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΠ½ΠΈΠΌΠΎΠΊ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΎΠΉ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ½ΡΡΠ°Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° UIImagePickerController ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠΉ Π²ΠΈΠ΄ Π² Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Π²ΠΈΠ΄Π°. ΠΠΎΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°:
#import Β«ViewController.hΒ»
#import <MobileCoreServices/MobileCoreServices.h>
@interface ViewController ()<UIImagePickerControllerDelegate,
UINavigationControllerDelegate>
@end
@implementation ViewController
<# ΠΡΡΠ°ΡΠΎΠΊ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ #>
ΠΠ΅Π»Π΅Π³Π°Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° UIImagePickerController Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌ UINavigationControllerDelegate ΠΈ UIImagePickerControllerDelegate. ΠΡΠ»ΠΈ Π²Ρ Π·Π°Π±ΡΠ΄Π΅ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈΡ Π². h-ΡΠ°ΠΉΠ» Π²Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-Π΄Π΅Π»Π΅Π³Π°ΡΠ°, ΡΠΎ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΡΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π΅Π»Π΅Π³Π°ΡΠ½ΠΎΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° UIImagePickerController ΠΈ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ²Π½ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌ UIImagePickerControllerDelegate ΠΈ UINavigationControllerDelegate, Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π² ΡΡΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°Ρ . Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ ΡΠΎΠ²Π΅ΡΡΡ Β«ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΒ» ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ-Π΄Π΅Π»Π΅Π³Π°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌ, β ΡΠ°ΠΊ Π²Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π»ΠΈΡΠ½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°.
Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π° ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
β (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear: animated];
static BOOL beenHereBefore = NO;
if (beenHereBefore){
/* ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π΄Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ
ΠΌΠ΅ΡΠΎΠ΄ viewDidAppear:, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π²ΠΈΠ΄Π°
Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π° */
return;
} else {
beenHereBefore = YES;
}
if ([self isCameraAvailable] &&
[self doesCameraSupportTakingPhotos]){
UIImagePickerController *controller =
[[UIImagePickerController alloc] init];
controller.sourceType = UIImagePickerControllerSourceTypeCamera;
NSString *requiredMediaType = (__bridge NSString *)kUTTypeImage;
controller.mediaTypes = [[NSArray alloc]
initWithObjects: requiredMediaType, nil];
controller.allowsEditing = YES;
controller.delegate = self;
[self.navigationController presentModalViewController: controller
animated: YES];
} else {
NSLog(@"Camera is not available.");
}
}
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ isCameraAvailable ΠΈ doesCameraSupportTakingPhotos. ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 13.1.
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΊΠΈ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΡ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ, Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π΄Π»Ρ Π΄Π΅Π»Π΅Π³Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π²ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΡ Π·Π°Π΄Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ self, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π²ΠΈΠ΄Π°. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ UIImagePickerControllerDelegate:
β (void) imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info{
NSLog(@"Picker returned successfully.");
NSLog(@"%@", info);
NSString *mediaType = [info objectForKey:
UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:(__bridge NSString *)kUTTypeMovie]){
NSURL *urlOfVideo =
[info objectForKey: UIImagePickerControllerMediaURL];
NSLog(@"Video URL = %@", urlOfVideo);
}
else if ([mediaType isEqualToString:(__bridge NSString *)kUTTypeImage]){
/* ΠΠΎΠ»ΡΡΠΈΠΌ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ
ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π½Π΅ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠΎΠ². */
NSDictionary *metadata =
[info objectForKey:
UIImagePickerControllerMediaMetadata];
UIImage *theImage =
[info objectForKey:
UIImagePickerControllerOriginalImage];
NSLog(@"Image Metadata = %@", metadata);
NSLog(@"Image = %@", theImage);
}
[picker dismissModalViewControllerAnimated: YES];
}
β (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
NSLog(@"Picker was cancelled");
[picker dismissModalViewControllerAnimated: YES];
}
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΠ°ΡΡ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ². ΠΠ²Π° Π΄Π΅Π»Π΅Π³Π°ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-Π΄Π΅Π»Π΅Π³Π°ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΅ΡΠΎΠ΄ imagePickerController: didFinishPickingMediaWithInfo: Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (ΡΠΎ Π΅ΡΡΡ Π΄Π΅Π»Π°Π΅Ρ ΡΠ½ΠΈΠΌΠΎΠΊ ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ). Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΌΠ΅ΡΠΎΠ΄ imagePickerControllerDidCancel: Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΡΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠ΅ΡΠΎΠ΄ Π΄Π΅Π»Π΅Π³Π°ΡΠ° imagePickerController: didFinishPickingMediaWithInfo: ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΠΎΠΌ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΎΡΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΠ΅. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ didFinishPickingMediaWithInfo β ΡΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠΎΠΎΠ±ΡΠ°ΡΡΠΈΠΉ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±ΡΠ»ΠΎ ΠΎΡΡΠ½ΡΡΠΎ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ»ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΡΠ½ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΠΈ Π΄ΡΡΠ³ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π Π°Π±ΠΎΡΡ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π°ΡΠ°ΡΡ ΡΠΎ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ° UIImagePickerControllerMediaType ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ. ΠΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ NSString ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
β’ kUTTypeImage β ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡ, ΡΠ΄Π΅Π»Π°Π½Π½Π°Ρ ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ;
β’ kUTTypeMovie β Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊ, ΠΎΡΡΠ½ΡΡΡΠΉ ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ.
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ kUTTypeImage ΠΈ kUTTypeMovie Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ Mobile Core Services ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠΈΠΏΡ CFStringRef. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΠΈΠΏ ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΊ NSString.
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΡΠΈΠΏ ΡΠ΅ΡΡΡΡΠ°, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ (ΡΠΎ Π΅ΡΡΡ ΡΠ·Π½Π°Π², ΠΈΠ΄Π΅Ρ ΡΠ΅ΡΡ ΠΎ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠ΅), ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°, Π²Π½ΠΎΠ²Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ»ΠΎΠ²Π°ΡΡ didFinishPickingMediaWithInfo.
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ (kUTTypeImage) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠ»ΡΡΠ°ΠΌ:
β’ UIImagePickerControllerMediaMetadata β ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, Ρ ΡΠ°Π½ΠΈΠΌΡΠΌ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΊΠ»ΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° NSDictionary. Π ΡΡΠΎΠΌ ΡΠ»ΠΎΠ²Π°ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΌΠ°ΡΡΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, ΠΎΡΡΠ½ΡΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² ΡΡΠΎΠΌ ΡΠ»ΠΎΠ²Π°ΡΠ΅, Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ;
β’ UIImagePickerControllerOriginalImage β ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, Ρ ΡΠ°Π½ΠΈΠΌΡΠΌ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΊΠ»ΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° UIImage. Π Π½Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡΡΠ½ΡΡΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ;
β’ UIImagePickerControllerCropRect β Π΅ΡΠ»ΠΈ Π²Ρ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° allowsEditing ΠΎΠ±ΡΠ΅ΠΊΡΠ° UIImagePickerController), ΡΠΎ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π±ΡΠ»Π° ΡΠ΄Π΅Π»Π°Π½Π° ΠΎΠ±ΡΠ΅Π·ΠΊΠ°;
β’ UIImagePickerControllerEditedImage β Π΅ΡΠ»ΠΈ Π²Ρ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° allowsEditing ΠΎΠ±ΡΠ΅ΠΊΡΠ° UIImagePickerController), ΡΠΎ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅, Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ).
ΠΠ»Ρ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠΎΠ² (kUTTypeMovie), ΠΎΡΡΠ½ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠ»ΡΡΡ UIImagePickerControllerMediaURL Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ didFinishPickingMediaWithInfo Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ imagePickerController: didFinishPickingMediaWithInfo:. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° NSURL, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ URL Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠ°, ΠΎΡΡΠ½ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ UIImage, ΠΎΡΡΠ½ΡΡΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
Π€ΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, ΡΠ½ΡΡΡΠ΅ Π²Π½ΡΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π΄Π»Ρ ΡΠ½ΠΈΠΌΠΊΠΎΠ² ΡΠΎΡΠΎΠΊΠ°ΠΌΠ΅ΡΡ (Camera Roll).