1。 定义 类变量:
UIImagePickerController* picker_library_;
2。实现 UIImagePickerControllerDelegate 这个delegate
3。 以模态的方式,显示 图片选取器
- picker_library_ = [[UIImagePickerController alloc] init];
- picker_library_.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
- picker_library_.allowsEditing = YES;
- picker_camera_.allowsImageEditing=YES;
- picker_library_.delegate = self;
- [self presentModalViewController: picker_library_
- animated: YES];
其中,sourceType 指定了 几种 图片的来源:
UIImagePickerControllerSourceTypePhotoLibrary:表示显示所有的照片
UIImagePickerControllerSourceTypeCamera:表示从摄像头选取照片
UIImagePickerControllerSourceTypeSavedPhotosAlbum:表示仅仅从相册中选取照片。
allowEditing和allowsImageEditing 设置为YES,表示 允许用户编辑图片,否则,不允许用户编辑。
4。 当用户选择一个图片以后,有可能调用两种不同的函数,根据版本的不同。所以,如果要同时支持高版本和低版本的兼容性,那么就
要处理两种函数。
//3.x 用户选中图片后的回调
- (void)imagePickerController: (UIImagePickerController *)picker
didFinishPickingMediaWithInfo: (NSDictionary *)info
//2.x 用户选中图片之后的回调
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
两种函数的处理代码如下:
- //3.x 用户选中图片后的回调
- - (void)imagePickerController: (UIImagePickerController *)picker
- didFinishPickingMediaWithInfo: (NSDictionary *)info
- {
- if (picker == picker_camera_)
- {
- //如果是 来自照相机的image,那么先保存
- UIImage* original_image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
- UIImageWriteToSavedPhotosAlbum(original_image, self,
- @selector(image:didFinishSavingWithError:contextInfo:),
- nil);
- }
- //获得编辑过的图片
- UIImage* image = [info objectForKey: @"UIImagePickerControllerEditedImage"];
- [self dismissModalViewControllerAnimated:YES];
- [picker release];
- }
- //2.x 用户选中图片之后的回调
- - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
- {
- NSMutableDictionary * dict= [NSMutableDictionary dictionaryWithDictionary:editingInfo];
- [dict setObject:image forKey:@"UIImagePickerControllerEditedImage"];
- //直接调用3.x的处理函数
- [self imagePickerController:picker didFinishPickingMediaWithInfo:dict];
- }
5。 用户取消选择
- // 用户选择取消
- - (void) imagePickerControllerDidCancel: (UIImagePickerController *)picker
- {
- [self dismissModalViewControllerAnimated:YES];
- [picker release];
- }
本文详细介绍了如何在Objective-C中利用UIKit框架创建一个图片选择器,并确保其在不同版本的iOS设备上都能正常工作。通过设置UIImagePickerControllerDelegate属性和处理不同的回调函数,实现了图片编辑和保存功能的兼容性。此外,文章还讨论了用户取消选择的情况处理及优化策略。
787

被折叠的 条评论
为什么被折叠?



