记得添加MobileCoreServices.framework
及导入#import <MobileCoreServices/MobileCoreServices.h>
@interface PPViewController ()<UIActionSheetDelegate,UINavigationControllerDelegate, UIImagePickerControllerDelegate> { UIImagePickerController *_pickerController; } @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @implementation PPViewController - (void)viewDidLoad { [super viewDidLoad]; _pickerController = [[UIImagePickerController alloc] init]; _pickerController.delegate = self;//设置代理 _pickerController.allowsEditing = YES;//图片可编辑(放大缩小) } - (IBAction)choseImage:(id)sender { // 判断是否有相机 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { //判断是否能摄像 if ([[UIImagePickerController availableMediaTypesForSourceType:_pickerController.sourceType] containsObject:(NSString *)kUTTypeMovie]) { _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:nil otherButtonTitles:@"相册",@"相机",@"摄像机", nil]; sheet.tag = ; [sheet showInView:self.view]; } else { UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:nil otherButtonTitles:@"相机",@"相册", nil]; sheet.tag = ; [sheet showInView:self.view]; } } else {//模拟器 UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:nil otherButtonTitles:@"相册", nil]; sheet.tag = ; [sheet showInView:self.view]; } } #pragma mark- UIActionSheet的代理方法 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { if (actionSheet.tag == ) { switch (buttonIndex) { case : { _pickerController.sourceType = UIImagePickerControllerSourceTypeCamera; _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage]; [self presentViewController:_pickerController animated:YES completion:nil]; } break; case : { _pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage]; [self presentViewController:_pickerController animated:YES completion:nil]; } break; default: break; } } if (actionSheet.tag == ) { switch (buttonIndex) { case : { _pickerController.sourceType = UIImagePickerControllerSourceTypeCamera; _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage]; [self presentViewController:_pickerController animated:YES completion:nil]; } break; case : { _pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; // _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage]; [self presentViewController:_pickerController animated:YES completion:nil]; } break; case : { _pickerController.sourceType = UIImagePickerControllerSourceTypeCamera; // pickController.videoQuality = UIImagePickerControllerQualityTypeLow;//可以选择图片质量 _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; [self presentViewController:_pickerController animated:YES completion:nil]; } default: break; } } if (actionSheet.tag == ) { if (buttonIndex == ) { _pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; // _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage]; [self presentViewController:_pickerController animated:YES completion:nil]; } } } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { NSLog(@"========%@",info);//返回的值都在info里面 if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString *)kUTTypeMovie]) { _imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:(NSString *)[[info objectForKey:UIImagePickerControllerMediaURL] path]]]; } else { _imageView.image = [info objectForKey:@"UIImagePickerControllerEditedImage"]; } [self dismissViewControllerAnimated:YES completion:nil]; } //如果这是一个modalViewController,需要dismiss 它发了个cancel消息,必须关闭它 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { [self dismissViewControllerAnimated:YES completion:nil]; } /** * { UIImagePickerControllerMediaType = "public.image"; UIImagePickerControllerOriginalImage = "<UIImage: 0x7fe3a3dc2a20> size {1500, 1001} orientation 0 scale 1.000000"; UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=B6C0A21C-07C3-493D-8B44-3BA4C9981C25&ext=JPG"; } */ /** * { UIImagePickerControllerCropRect = "NSRect: {{0, 0}, {1500, 1003}}"; UIImagePickerControllerEditedImage = "<UIImage: 0x7fec5c8145b0> size {638, 426} orientation 0 scale 1.000000"; UIImagePickerControllerMediaType = "public.image"; UIImagePickerControllerOriginalImage = "<UIImage: 0x7fec5c80d4c0> size {1500, 1001} orientation 0 scale 1.000000"; UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=B6C0A21C-07C3-493D-8B44-3BA4C9981C25&ext=JPG"; } */