ios中关于UIImagePickerController的一些知识总结

记得添加MobileCoreServices.framework

及导入#import <MobileCoreServices/MobileCoreServices.h>

  1 @interface PPViewController ()<UIActionSheetDelegate,UINavigationControllerDelegate, UIImagePickerControllerDelegate>
  2 
  3 {
  4 
  5     UIImagePickerController *_pickerController;
  6 
  7 }
  8 
  9 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
 10 
 11  
 12 
 13 @end
 14 
 15  
 16 
 17 @implementation PPViewController
 18 
 19  
 20 
 21 - (void)viewDidLoad
 22 
 23 {
 24 
 25     [super viewDidLoad];
 26 
 27     _pickerController = [[UIImagePickerController alloc] init];
 28 
 29     _pickerController.delegate = self;//设置代理
 30 
 31     _pickerController.allowsEditing = YES;//图片可编辑(放大缩小)
 32 
 33 }
 34 
 35 - (IBAction)choseImage:(id)sender
 36 
 37 {
 38 
 39     // 判断是否有相机
 40 
 41     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
 42 
 43     {
 44 
 45         
 46 
 47         //判断是否能摄像
 48 
 49         if ([[UIImagePickerController availableMediaTypesForSourceType:_pickerController.sourceType] containsObject:(NSString *)kUTTypeMovie])
 50 
 51         {
 52 
 53             _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
 54 
 55             UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:nil otherButtonTitles:@"相册",@"相机",@"摄像机", nil];
 56 
 57             sheet.tag = 2;
 58 
 59             [sheet showInView:self.view];
 60 
 61         }
 62 
 63         else
 64 
 65         {
 66 
 67             UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:nil otherButtonTitles:@"相机",@"相册", nil];
 68 
 69             sheet.tag = 1;
 70 
 71             [sheet showInView:self.view];
 72 
 73         }
 74 
 75     }
 76 
 77     
 78 
 79     else
 80 
 81     {//模拟器
 82 
 83         UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:nil otherButtonTitles:@"相册", nil];
 84 
 85         sheet.tag = 3;
 86 
 87         [sheet showInView:self.view];
 88 
 89     }
 90 
 91  
 92 
 93 }
 94 
 95 #pragma mark- UIActionSheet的代理方法
 96 
 97 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
 98 
 99 {
100 
101     if (actionSheet.tag == 1)
102 
103     {
104 
105         switch (buttonIndex)
106 
107         {
108 
109             case 0:
110 
111             {
112 
113                 _pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
114 
115                 _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
116 
117                 [self presentViewController:_pickerController animated:YES completion:nil];
118 
119             }
120 
121                 break;
122 
123             case 1:
124 
125             {
126 
127                 _pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
128 
129                 _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
130 
131                 [self presentViewController:_pickerController animated:YES completion:nil];
132 
133             }
134 
135                 break;
136 
137                 
138 
139             default:
140 
141                 break;
142 
143         }
144 
145  
146 
147     }
148 
149     if (actionSheet.tag == 2)
150 
151     {
152 
153         switch (buttonIndex)
154 
155         {
156 
157             case 0:
158 
159             {
160 
161                 _pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
162 
163                 _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
164 
165                 [self presentViewController:_pickerController animated:YES completion:nil];
166 
167             }
168 
169                 break;
170 
171             case 1:
172 
173             {
174 
175                 _pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
176 
177 //                _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
178 
179                 [self presentViewController:_pickerController animated:YES completion:nil];
180 
181             }
182 
183                 break;
184 
185             case 2:
186 
187             {
188 
189                 _pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
190 
191                 //        pickController.videoQuality = UIImagePickerControllerQualityTypeLow;//可以选择图片质量
192 
193                 _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
194 
195                 [self presentViewController:_pickerController animated:YES completion:nil];
196 
197             }
198 
199             default:
200 
201                 break;
202 
203         }
204 
205     }
206 
207     if (actionSheet.tag == 3)
208 
209     {
210 
211         if (buttonIndex == 0)
212 
213         {
214 
215             _pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
216 
217 //            _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
218 
219             [self presentViewController:_pickerController animated:YES completion:nil];
220 
221         }
222 
223  
224 
225     }
226 
227 }
228 
229  
230 
231 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
232 
233 {
234 
235     NSLog(@"========%@",info);//返回的值都在info里面
236 
237     if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString *)kUTTypeMovie])
238 
239     {
240 
241         _imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:(NSString *)[[info objectForKey:UIImagePickerControllerMediaURL] path]]];
242 
243     }
244 
245     else
246 
247     {
248 
249         _imageView.image = [info objectForKey:@"UIImagePickerControllerEditedImage"];
250 
251     }
252 
253     [self dismissViewControllerAnimated:YES completion:nil];
254 
255     
256 
257 }
258 
259 //如果这是一个modalViewController,需要dismiss 它发了个cancel消息,必须关闭它
260 
261 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
262 
263 {
264 
265     [self dismissViewControllerAnimated:YES completion:nil];
266 
267 }
268 
269 /**
270 
271  *  {
272 
273  UIImagePickerControllerMediaType = "public.image";
274 
275  UIImagePickerControllerOriginalImage = "<UIImage: 0x7fe3a3dc2a20> size {1500, 1001} orientation 0 scale 1.000000";
276 
277  UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=B6C0A21C-07C3-493D-8B44-3BA4C9981C25&ext=JPG";
278 
279  }
280 
281  */
282 
283 /**
284 
285  *  {
286 
287  UIImagePickerControllerCropRect = "NSRect: {{0, 0}, {1500, 1003}}";
288 
289  UIImagePickerControllerEditedImage = "<UIImage: 0x7fec5c8145b0> size {638, 426} orientation 0 scale 1.000000";
290 
291  UIImagePickerControllerMediaType = "public.image";
292 
293  UIImagePickerControllerOriginalImage = "<UIImage: 0x7fec5c80d4c0> size {1500, 1001} orientation 0 scale 1.000000";
294 
295  UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=B6C0A21C-07C3-493D-8B44-3BA4C9981C25&ext=JPG";
296 
297  }
298 
299  */
原文地址:https://www.cnblogs.com/dlwj/p/4886568.html