系统方法选取照片

2018-01-23  本文已影响1人  浩然爸

ImagePickerTool.h

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

typedef NS_ENUM(NSUInteger, IMAGEPICKERTYPE) {
    IMAGEPICKERTYPE_ALBUM, //相册
    IMAGEPICKERTYPE_CAMERA, //照相机
};

@interface ImagePickerTool : NSObject

//选取照片以后的回调方法
@property (copy, nonatomic) void(^select)(UIImage *image);
//取消选取的回调方法
@property (copy, nonatomic) void(^cancel)();

/**
 初始化方法

 @return imagePickerTool
 */
+ (instancetype)imagePickerTool;

/**
 显示系统图片选取控制器

 @param type 类型(camera/album)
 @param controller 控制器
 @param select 选取的回调
 @param cancel 取消的回调
 */
- (void)showWithType:(IMAGEPICKERTYPE)type inViewController:(UIViewController *)controller select:(void(^)(UIImage *image))select cancel:(void(^)())cancel;

@end

ImagePickerTool.m

#import "ImagePickerTool.h"
//#import "CaptureViewController.h"
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface ImagePickerTool ()<UINavigationControllerDelegate, UIImagePickerControllerDelegate>

@property (strong, nonatomic) UIImagePickerController *imagePicker;

@end

@implementation ImagePickerTool

+ (instancetype)imagePickerTool
{
    return [[self alloc] init];
}

- (void)showWithType:(IMAGEPICKERTYPE)type inViewController:(UIViewController *)controller select:(void (^)(UIImage *))select cancel:(void (^)())cancel
{
    _imagePicker = [[UIImagePickerController alloc]init];
    _imagePicker.delegate = self;
    self.select = select;
    self.cancel = cancel;
    if (type == IMAGEPICKERTYPE_ALBUM) {
        _imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        _imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
        _imagePicker.allowsEditing = NO;
        
        [controller presentViewController:_imagePicker animated:YES completion:nil];
        
        
    }
    else
    {
        _imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        _imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
        _imagePicker.allowsEditing = NO;
        
        [controller presentViewController:_imagePicker animated:YES completion:nil];
    }
    
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
    [picker dismissViewControllerAnimated:YES completion:^{
        UIImage *image = info[UIImagePickerControllerOriginalImage];
        UIImage *thumbImage = [UIImage imageWithData:UIImageJPEGRepresentation(image, 0.8f)];
        if (self.select)
            self.select(image);
    }];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [picker dismissViewControllerAnimated:YES completion:^{
        if (self.cancel)
            self.cancel();
    }];
}

@end

使用方法

_pickerTool = [ImagePickerTool imagePickerTool];
[self.pickerTool showWithType:(IMAGEPICKERTYPE_ALBUM) inViewController:self select:^(UIImage *image) {
           
        } cancel:^{
            
        }];
上一篇下一篇

猜你喜欢

热点阅读