Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 114

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

Π€ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, снятыС Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнта для Π²Ρ‹Π±ΠΎΡ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ для снимков Ρ„ΠΎΡ‚ΠΎΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ (Camera Roll).

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π» 13.1.

13.3. Π—Π°ΠΏΠΈΡΡŒ Π²ΠΈΠ΄Π΅ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

НСобходимо ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ записи Π²ΠΈΠ΄Π΅ΠΎ со своСго устройства с систСмой iOS. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ сами Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ это Π²ΠΈΠ΄Π΅ΠΎ Π² своСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

РСшСниС

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ UIImagePickerController с источником Ρ‚ΠΈΠΏΠ° UIImagePickerControllerSourceTypeCamera ΠΈ ΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Ρ‚ΠΈΠΏΠ° kUTTypeMovie:


β€” (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;


controller.mediaTypes = @[(__bridge NSString *)kUTTypeMovie];

controller.allowsEditing = YES;

controller.delegate = self;


[self.navigationController presentModalViewController: controller

animated: YES];


} else {

NSLog(@"Camera is not available.");

}


}

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ isCameraAvailable ΠΈ doesCameraSupportShootingVideos, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈ обсуТдСны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 13.1.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° инструмСнта для Π²Ρ‹Π±ΠΎΡ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:


β€” (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);


NSError *dataReadingError = nil;


NSData *videoData =

[NSData dataWithContentsOfURL: urlOfVideo

options: NSDataReadingMapped

error:&dataReadingError];


if (videoData!= nil){

/* ΠΠ°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. */

NSLog(@"Successfully loaded the data.");

} else {

/* ΠΠ°ΠΌ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ

dataReadingError, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π² Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ошибка. */

NSLog(@"Failed to load the data with error = %@",

dataReadingError);

}


}

[picker dismissModalViewControllerAnimated: YES];


}


β€” (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{


NSLog(@"Picker was cancelled");

[picker dismissModalViewControllerAnimated: YES];


}

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ устройство с систСмой iOS, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ запись Π²ΠΈΠ΄Π΅ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ инструмСнт для Π²Ρ‹Π±ΠΎΡ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Ρ‚ΠΈΠΏΠΎΠΌ источника UIImagePickerControllerSourceTypeCamera ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ ΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ kUTTypeMovie, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ вашСго прилоТСния ΠΌΠΎΠ³ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ съСмка Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° imagePickerController: didFinishPickingMediaWithInfo: ΠΈ Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ словаря didFinishPickingMediaWithInfo, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± отснятом Π²ΠΈΠ΄Π΅ΠΎ. (ЗначСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² Ρ‚Π°ΠΊΠΎΠΌ словарС, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрСны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 13.2.)

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ записываСт Π²ΠΈΠ΄Π΅ΠΎ, работая ΠΏΡ€ΠΈ этом с инструмСнтом для Π²Ρ‹Π±ΠΎΡ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, это Π²ΠΈΠ΄Π΅ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ вашСго прилоТСния, Π° Π½Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ для снимков ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π½Π° устройствС (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Π² Camera Roll). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ URL: file://localhost/private/var/mobile/Applications/<APPID>/tmp/captureT0x104e20.tmp.TQ9UTr/capturedvideo.MOV.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ APPID Π² этом URL Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ вашСго прилоТСния. РазумССтся, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ спСцифичным Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Как программист Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎ Π½Π° ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ устройства, Π½ΠΎ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ отснятый Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π». МоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π²Π° Π²Π°ΠΆΠ½Ρ‹Ρ… свойства класса UIImagePickerController, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ стандартный Ρ…ΠΎΠ΄ записи Π²ΠΈΠ΄Π΅ΠΎ:

β€’ videoQuality β€” Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ качСство записываСмого Π²ΠΈΠ΄Π΅ΠΎ. Для Π΄Π°Π½Π½ΠΎΠ³ΠΎ свойства ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ UIImagePickerControllerQualityTypeHigh ΠΈΠ»ΠΈ UIImagePickerControllerQualityTypeMedium;

β€’ videoMaximumDuration β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ измСряСтся Π² сСкундах.


НапримСр, Ссли ΠΌΡ‹ прСдоставляСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ высококачСствСнноС Π²ΠΈΠ΄Π΅ΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ 30 сСкунд, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ просто ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ значСния Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… свойств экзСмпляра UIImagePickerController:


β€” (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;


controller.mediaTypes = @[(__bridge NSString *)kUTTypeMovie];


controller.allowsEditing = YES;

controller.delegate = self;


/* Π—аписываСм Π²ΠΈΠ΄Π΅ΠΎ Π² высоком качСствС. */

controller.videoQuality = UIImagePickerControllerQualityTypeHigh;


/* ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 30 ΡΠ΅ΠΊΡƒΠ½Π΄ Π²ΠΈΠ΄Π΅ΠΎ. */

controller.videoMaximumDuration = 30.0f;


[self.navigationController presentModalViewController: controller

animated: YES];


} else {

NSLog(@"Camera is not available.");

}


}

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π» 13.1.

13.4. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ снимков Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

НСобходимо ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сохранСния снимков Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ.

РСшСниС

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ UIImageWriteToSavedPhotosAlbum:


β€” (void) imageWasSavedSuccessfully:(UIImage *)paramImage

didFinishSavingWithError:(NSError *)paramError

contextInfo:(void *)paramContextInfo{


if (paramError == nil){

NSLog(@"Image was saved successfully.");

} else {

NSLog(@"An error happened while saving the image.");

NSLog(@"Error = %@", paramError);

}


}


β€” (void) imagePickerController:(UIImagePickerController *)picker

didFinishPickingMediaWithInfo:(NSDictionary *)info{


NSLog(@"Picker returned successfully.");


NSLog(@"%@", info);


NSString *mediaType = [info objectForKey:

UIImagePickerControllerMediaType];


if ([mediaType isEqualToString:(__bridge NSString *)kUTTypeImage]){

UIImage *theImage = nil;


if ([picker allowsEditing]){

theImage = [info objectForKey: UIImagePickerControllerEditedImage];

} else {

theImage = [info objectForKey: UIImagePickerControllerOriginalImage];

}


SEL selectorToCall = @selector(imageWasSavedSuccessfully:

didFinishSavingWithError: contextInfo:);

UIImageWriteToSavedPhotosAlbum(theImage,

self,

selectorToCall,

NULL);

}


[picker dismissModalViewControllerAnimated: YES];


}


β€” (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{


NSLog(@"Picker was cancelled");

[picker dismissModalViewControllerAnimated: YES];


}


β€” (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;