iOS 图片相册调用封装

来源:互联网 发布:跟谁学网络老师好吗 编辑:程序博客网 时间:2024/05/04 13:51

开发项目中,经常会用到调用相册,拍照获取照片等等。于是特地把这个功能封装了一下,方便以后重复使用。
使用方法如下:

#import "LYImagePicker.h"[[LYImagePicker sharePicker] showPickerWith:self allowEdit:NO completeBlock:^(UIImage *image) {        //image就是选择到的图片,并且压缩了一下    }];

self传入的是当前的UIViewController
allowEdit 是指选择图像时是否允许编辑

下面上代码

#import <UIKit/UIKit.h>@interface LYImagePicker : NSObject<UIImagePickerControllerDelegate,UINavigationControllerDelegate,UIActionSheetDelegate>+ (LYImagePicker *)sharePicker;- (void)showPickerWith:(UIViewController *)viewController                  allowEdit:(BOOL)allowEdit         completeBlock:(void (^)(UIImage *image))image;@end
#import "LYImagePicker.h"@implementation LYImagePicker{    void (^ImageBlock)(UIImage *image);    UIViewController *_viewController;    BOOL _allowEdit;}static LYImagePicker* _picker;+ (LYImagePicker *)sharePicker{    if (!_picker) {        _picker = [[LYImagePicker alloc]init];    }    return _picker;}- (void)showPickerWith:(UIViewController *)viewController                  allowEdit:(BOOL)allowEdit         completeBlock:(void (^)(UIImage *image))image{    UIActionSheet *sheet = [[UIActionSheet alloc]initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"从相册选择",@"拍一张", nil];    [sheet showInView:viewController.view];    _allowEdit = allowEdit;    _viewController = viewController;    ImageBlock = image;}- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{    if (buttonIndex < 2) {        [self showPickerView:buttonIndex];    }}- (void)showPickerView:(NSInteger)buttonIndex{    UIImagePickerController* picker = [[UIImagePickerController alloc] init];    picker.delegate = self;    picker.allowsEditing = _allowEdit;    if (buttonIndex == 0) {        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;    }else{        picker.sourceType = UIImagePickerControllerSourceTypeCamera;    }    [_viewController presentViewController:picker animated:YES completion:nil];}- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{    [picker dismissViewControllerAnimated:YES completion:nil];    NSData *imageData;    if (_allowEdit) {        imageData = UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerEditedImage"], 0.5);    }else{        imageData = UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 0.5);    }    UIImage *image = [UIImage imageWithData:imageData];    ImageBlock(image);}@end

有更好的建议请留言给我,感谢!

0 0
原创粉丝点击