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

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

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

На этом этапС Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ вопрос: ΠΊΠ°ΠΊ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ рСсурса? ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ resultBlock ΠΌΠ΅Ρ‚ΠΎΠ΄Π° экзСмпляра assetForURL: resultBlock: failureBlock, относящСгося ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ рСсурсов, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ СдинствСнный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° ALAsset. ALAsset β€” это класс, прСдоставляСмый Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ рСсурсов, ΠΎΠ½ инкапсулируСт (Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя) рСсурс, доступный для Photos (Π€ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ) ΠΈΠ»ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния iOS, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот рСсурс. Π’Π΅ΠΌΠ° сохранСния фотоснимков ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠΎΠ² Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрСна Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… 13.4 ΠΈ 13.5. О ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ рСсурсов ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассказано Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… 13.6 ΠΈ 13.7.

13.1. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ испытаниС ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹

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

ВрСбуСтся ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΌΠ΅Ρ€Π° Π½Π° Ρ‚ΠΎΠΌ устройствС с iOS, Π³Π΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ этой ΠΊΠ°ΠΌΠ΅Ρ€Π΅. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ. Π’Π΅Π΄ΡŒ нСльзя ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ устройствах, Π½Π΅ оснащСнных ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ.

РСшСниС

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса isSourceTypeAvailable:, относящийся ΠΊ классу UIImagePickerController, со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ UIImagePickerControllerSourceTypeCamera ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


β€” (BOOL) isCameraAvailable{


return [UIImagePickerController isSourceTypeAvailable:

UIImagePickerControllerSourceTypeCamera];


}


β€” (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


if ([self isCameraAvailable]){

NSLog(@"Camera is available.");

} else {

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

}


self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];


self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

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

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ экзСмпляр UIImagePickerController, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π΄Π΅Π»Π°Ρ‚ΡŒ фотоснимки ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎ, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, поддСрТиваСтся Π»ΠΈ Π½Π° устройствС этот интСрфСйс. ΠœΠ΅Ρ‚ΠΎΠ΄ класса isSourceTypeAvailable: позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ источника Π΄Π°Π½Π½Ρ‹Ρ…:

β€’ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ β€” для этого Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ сообщаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ UIImagePickerControllerSourceTypeCamera;

β€’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ β€” для этого Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ сообщаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ UIImagePickerControllerSourceTypePhotoLibrary. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΠ±Π·ΠΎΡ€ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Photos Π½Π° устройствС;

β€’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с фотографиями, отснятыми с ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ устройства (Camera Roll), β€” Π² Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ UIImagePickerControllerSourceTypeSavedPhotosAlbum.


Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ любой ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° устройствС с iOS, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ описанныС значСния ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ класса isSourceTypeAvailable:, относящСмуся ΠΊ классу UIImagePickerController, ΠΈ лишь ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ класса isSourceTypeAvailable: ΠΈ availableMediaTypesForSourceType:, относящимися ΠΊ классу UIImagePickerController, Ρ‡Ρ‚ΠΎΠ±Ρ‹ для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, доступСн Π»ΠΈ источник ΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΌΠ΅Ρ€Π°, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈ Ρ‚. Π΄.). Если источник имССтся, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠ΅Π΄ΠΈΠ°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, изобраТСния ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ) Π² Π½Π΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ:


β€” (BOOL) cameraSupportsMedia:(NSString *)paramMediaType

sourceType:(UIImagePickerControllerSourceType)paramSourceType{


__block BOOL result = NO;


if ([paramMediaType length] == 0){

NSLog(@"Media type is empty.");

return NO;

}


NSArray *availableMediaTypes =

[UIImagePickerController

availableMediaTypesForSourceType: paramSourceType];


[availableMediaTypes enumerateObjectsUsingBlock:

^(id obj, NSUInteger idx, BOOL *stop) {


NSString *mediaType = (NSString *)obj;

if ([mediaType isEqualToString: paramMediaType]){

result = YES;

*stop= YES;

}


}];


return result;


}


β€” (BOOL) doesCameraSupportShootingVideos{


return [self cameraSupportsMedia:(__bridge NSString *)kUTTypeMovie

sourceType: UIImagePickerControllerSourceTypeCamera];


}


β€” (BOOL) doesCameraSupportTakingPhotos{


return [self cameraSupportsMedia:(__bridge NSString *)kUTTypeImage

sourceType: UIImagePickerControllerSourceTypeCamera];


}


β€” (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


if ([self doesCameraSupportTakingPhotos]){

NSLog(@"The camera supports taking photos.");

} else {

NSLog(@"The camera does not support taking photos");

}


if ([self doesCameraSupportShootingVideos]){

NSLog(@"The camera supports shooting videos.");

} 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;

}

ΠœΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ kUTTypeMovie ΠΈ kUTTypeImage ΠΊ NSString с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ __bridge (ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ рассказано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 1.18). Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π²Π° Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… значСния относятся ΠΊ Ρ‚ΠΈΠΏΡƒ CFStringRef ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… прСдставлСниС Π² Π²ΠΈΠ΄Π΅ NSString. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ статичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ компилятора ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚ компилятора Π»ΠΈΡˆΠ½ΠΈΡ… сообщСний, Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ².

На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… устройствах с iOS ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСна Π½Π΅ ΠΎΠ΄Π½Π° ΠΊΠ°ΠΌΠ΅Ρ€Π°. НапримСр, ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π²Π΅ β€” пСрСдняя ΠΈ задняя. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, доступны Π»ΠΈ эти ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ класса isCameraDeviceAvailable:, относящимся ΠΊ классу UIImagePickerController:


β€” (BOOL) isFrontCameraAvailable{


return [UIImagePickerController

isCameraDeviceAvailable: UIImagePickerControllerCameraDeviceFront];


}


β€” (BOOL) isRearCameraAvailable{


return [UIImagePickerController

isCameraDeviceAvailable: UIImagePickerControllerCameraDeviceRear];


}


Если Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π° Π½Π΅ самом Π½ΠΎΠ²ΠΎΠΌ iPhone, Π³Π΄Π΅ отсутствуСт задняя ΠΊΠ°ΠΌΠ΅Ρ€Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ isFrontCameraAvailable Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ NO, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ isRearCameraAvailable β€” YES. ΠŸΡ€ΠΈ запускС Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° iPhone, оснащСнном ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π·Π°Π΄Π½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ, ΠΎΠ±Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π΅Ρ€Π½ΡƒΡ‚ YES, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° iPhone 4 ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ β€” спСрСди ΠΈ сзади.

Если Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ нСдостаточно просто ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, какая ΠΊΠ°ΠΌΠ΅Ρ€Π° имССтся Π½Π° устройствС, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ настройки, воспользовавшись классом UIImagePickerController. Одна ΠΈΠ· этих настроСк позволяСт ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π½Π° ΠΊΠ°ΠΌΠ΅Ρ€Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ устройства функция Π²ΡΠΏΡ‹ΡˆΠΊΠΈ. ΠœΠ΅Ρ‚ΠΎΠ΄ класса isFlashAvailableForCameraDevice:, относящийся ΠΊ классу UIImagePickerController, примСняСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΌΠ΅Ρ€Π΅ доступна функция Π²ΡΠΏΡ‹ΡˆΠΊΠΈ β€” ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ ΠΈΠ»ΠΈ Π·Π°Π΄Π½Π΅ΠΉ. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса isFlashAvailableForCameraDevice:, относящийся ΠΊ классу UIImagePickerController, сначала провСряСт Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, Π° ΡƒΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΌ провСряСтся Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΡΠΏΡ‹ΡˆΠΊΠΈ Π½Π° этой ΠΊΠ°ΠΌΠ΅Ρ€Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ здСсь Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈ Π½Π° устройствах, Π»ΠΈΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ ΠΈΠ»ΠΈ Π·Π°Π΄Π½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, Π±Π΅Π· нСобходимости ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ доступности ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹:


β€” (BOOL) isFlashAvailableOnFrontCamera{


return [UIImagePickerController isFlashAvailableForCameraDevice:

UIImagePickerControllerCameraDeviceFront];


}


β€” (BOOL) isFlashAvailableOnRearCamera{


return [UIImagePickerController isFlashAvailableForCameraDevice:

UIImagePickerControllerCameraDeviceRear];


}


Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ всСми ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, написанными Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅, ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅ нашСго прилоТСния, ΠΌΡ‹ смоТСм ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… устройствах:


β€” (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


if ([self isFrontCameraAvailable]){

NSLog(@"The front camera is available.");

if ([self isFlashAvailableOnFrontCamera]){

NSLog(@"The front camera is equipped with a flash");

} else {

NSLog(@"The front camera is not equipped with a flash");

}

} else {

NSLog(@"The front camera is not available.");

}


if ([self isRearCameraAvailable]){

NSLog(@"The rear camera is available.");

if ([self isFlashAvailableOnRearCamera]){

NSLog(@"The rear camera is equipped with a flash");

} else {

NSLog(@"The rear camera is not equipped with a flash");

}

} else {

NSLog(@"The rear camera is not available.");

}


if ([self doesCameraSupportTakingPhotos]){

NSLog(@"The camera supports taking photos.");

} else {

NSLog(@"The camera does not support taking photos");

}


if ([self doesCameraSupportShootingVideos]){

NSLog(@"The camera supports shooting videos.");