Ja, Sie können dies im Delegaten-Rückruf tun. Wie Sie vielleicht bemerkt haben, gibt der Info Dictionary Schlüssel UIImagePickerControllerMediaType
eine "public.image" Zeichenfolge als UTI zurück, was für Ihren Zweck nicht ausreicht. Dies kann jedoch mithilfe der URL erfolgen, die dem Schlüssel UIImagePickerControllerReferenceURL
im Infowörterbuch zugeordnet ist. Zum Beispiel könnte die Implementierung ähnlich der folgenden Methode aussehen.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image = info[UIImagePickerControllerEditedImage];
NSURL *assetURL = info[UIImagePickerControllerReferenceURL];
NSString *extension = [assetURL pathExtension];
CFStringRef imageUTI = (UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,(__bridge CFStringRef)extension , NULL));
if (UTTypeConformsTo(imageUTI, kUTTypeJPEG))
{
// Handle JPG
}
else if (UTTypeConformsTo(imageUTI, kUTTypePNG))
{
// Handle PNG
}
else
{
NSLog(@"Unhandled Image UTI: %@", imageUTI);
}
CFRelease(imageUTI);
[self.imageView setImage:image];
[picker dismissViewControllerAnimated:YES completion:NULL];
}
Sie werden auch gegen MobileCoreServices.framework verlinkt werden müssen und fügen Sie eine #import <MobileCoreServices/MobileCoreServices.h>