Skip to content

marujun/USImagePickerController

Repository files navigation

照片选择器、图片浏览器 组件的DEMO

CocoaPods

  1. 在 Podfile 中添加 pod 'USImagePickerController'
  2. 执行 pod installpod update
  3. 导入对应的头文件

USImagePickerController

备注:iOS7~8.0使用ALAsset ----- iOS8.1及以上使用PHAsset

screenshot 1 screenshot 2

Usages

  1. Import header

    #import "USImagePickerController.h"
  2. Create and present USImagePickerController

    //选择多张照片
    USImagePickerController *controller = [[USImagePickerController alloc] init];
    controller.delegate = self;
    controller.allowsMultipleSelection = YES;
    controller.maxSelectNumber = 9;
    [self presentViewController:controller animated:true completion:nil];
    
    //选择单张照片
    USImagePickerController *controller = [[USImagePickerController alloc] init];
    controller.delegate = self;
    controller.allowsEditing = YES;
    controller.cropMaskAspectRatio = 1;
    [self presentViewController:controller animated:true completion:nil];
  3. 相关属性

    /*!
     @property
     @brief 是否允许编辑选择的照片,默认为NO
     */
    @property (nonatomic, assign) BOOL allowsEditing;
    
    /*!
     @property
     @brief 裁剪已选照片时的遮罩区域尺寸的宽高比(allowsEditing必须设置为YES),默认为1
     */
    @property (nonatomic, assign) CGFloat cropMaskAspectRatio;
    
    /*!
     @property
     @brief 是否允许选择多张照片,默认为NO
     */
    @property (nonatomic, assign) BOOL allowsMultipleSelection;
    
    /*!
     @property
     @brief 在允许选择多张照片的情况,最大选择张数,默认无限制
     */
    @property (nonatomic, assign) NSInteger maxSelectNumber;
    
    /*!
     @property
     @brief 是否已选择使用原图,默认为NO
     */
    @property (nonatomic, assign, readonly) BOOL selectedOriginalImage;
  4. PHAssetALAsset 的扩展方法

    /** 尺寸 */
    - (CGSize)dimensions;
    
    /** 最后编辑时间 */
    - (NSDate *)modifiedDate;
    
    /** 原始文件名 */
    - (NSString *)originalFilename;
    
    /** 全屏图 */
    - (UIImage *)fullScreenImage;
    
    /** 唯一标识 */
    - (NSString *)localIdentifier;
    
    /** 原始比例的缩略图 */
    - (UIImage *)aspectRatioThumbnailImage;
    
    /** 原始比例的高清图 */
    - (UIImage *)aspectRatioHDImage;
    
    /** 原始照片数据 */
    - (NSData *)originalImageData;
    
    /** 通过指定宽高的最大像素值来获取对应的缩略图 */
    - (UIImage *)thumbnailImageWithMaxPixelSize:(CGFloat)maxPixelSize;
    
    /** 通过照片的路径获取对应的Asset实例 */
    + (instancetype)fetchAssetWithIdentifier:(NSString *)identifier;
    
    /**  获取元数据信息, 例如: Exif, GPS, Camera ... */
    - (void)requestMetadataWithCompletionHandler:(void(^)(NSDictionary *metadata))completionHandler;

##ImagePickerSheetController

类似系统短信中的快速选择照片空间

screenshot 3

###Usages

  1. Import header

    #import "ImagePickerSheetController.h"
  2. Create and present ImagePickerSheetController

    ImagePickerSheetController *controller = [[ImagePickerSheetController alloc] init];
    controller.maximumSelection = 8;
    controller.displaySelectMaxLimit = YES;
        
    ImageAction *action = [[ImageAction alloc] init];
    action.title = @"照片图库";
    action.style = ImageActionStyleDefault;
    [action setSecondaryTitle:^NSString *(NSInteger num) {
        return [NSString stringWithFormat:@"发送 %@ 张照片",@(num)];
    }];
    [action setHandler:^(ImageAction *action) {
        [self presentImagePickerController:UIImagePickerControllerSourceTypePhotoLibrary];
    }];
    [action setSecondaryHandler:^(ImageAction *action, NSInteger num) {
        NSLog(@"controller.selectedImageAssets %@", controller.selectedImageAssets);
    }];
    [controller addAction:action];
        
    action = [[ImageAction alloc] init];
    action.title = @"拍照";
    action.style = ImageActionStyleDefault;
    [action setSecondaryTitle:^NSString *(NSInteger num) {
        return @"添加注释";
    }];
    [action setHandler:^(ImageAction *action) {
        [self presentImagePickerController:UIImagePickerControllerSourceTypeCamera];
    }];
    [action setSecondaryHandler:^(ImageAction *action, NSInteger num) {
        
    }];
    [controller addAction:action];
        
    action = [[ImageAction alloc] init];
    action.title = @"取消";
    action.style = ImageActionStyleCancel;
    [controller addAction:action];
        
    [self presentViewController:controller animated:true completion:nil];

##USAssetsPageViewController

图片浏览器

screenshot 4

###Usages

  1. Import header

    #import "USAssetsPageViewController.h"
  2. Create and present USImagePickerController

    USAssetsPageViewController *pageVC = [[USAssetsPageViewController alloc] initWithAssets:_dataSource];
    pageVC.view.translatesAutoresizingMaskIntoConstraints = NO;
        
    __weak typeof(self) weak_self = self;
    [pageVC setIndexChangedHandler:^(NSInteger index) {
        [weak_self updateTitle:index];
    }];
    pageVC.pageIndex = 0;
        
    [self.view addSubview:pageVC.view];
    [self addChildViewController:pageVC];
        
    NSDictionary *views = @{@"view":pageVC.view};
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[view]-0-|" options:0 metrics:nil views:views]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[view]-0-|" options:0 metrics:nil views:views]];

License

This project is is available under the MIT license. See the LICENSE file for more info. Attribution by linking to the project page is appreciated.