// // QBImagePickerThumbnailView.m // QBImagePickerController // // Created by Tanaka Katsuma on 2013/12/31. // Copyright (c) 2013年 Katsuma Tanaka. All rights reserved. // #import "QBImagePickerThumbnailView.h" @interface QBImagePickerThumbnailView () @property (nonatomic, copy) NSArray *thumbnailImages; @property (nonatomic, strong) UIImage *blankImage; @end @implementation QBImagePickerThumbnailView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor clearColor]; } return self; } - (CGSize)sizeThatFits:(CGSize)size { return CGSizeMake(70.0, 74.0); } - (void)drawRect:(CGRect)rect { [super drawRect:rect]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0); if (self.thumbnailImages.count == 3) { UIImage *thumbnailImage = [self.thumbnailImages firstObject]; CGRect thumbnailImageRect = CGRectMake(4.0, 0, 62.0, 62.0); CGContextFillRect(context, thumbnailImageRect); [thumbnailImage drawInRect:CGRectInset(thumbnailImageRect, 0.5, 0.5)]; } if (self.thumbnailImages.count >= 2) { UIImage *thumbnailImage = self.thumbnailImages[1]; CGRect thumbnailImageRect = CGRectMake(2.0, 2.0, 66.0, 66.0); CGContextFillRect(context, thumbnailImageRect); [thumbnailImage drawInRect:CGRectInset(thumbnailImageRect, 0.5, 0.5)]; } if (self.thumbnailImages.count >= 1) { UIImage *thumbnailImage = [self.thumbnailImages lastObject]; CGRect thumbnailImageRect = CGRectMake(0, 4.0, 70.0, 70.0); CGContextFillRect(context, thumbnailImageRect); [thumbnailImage drawInRect:CGRectInset(thumbnailImageRect, 0.5, 0.5)]; } } #pragma mark - Accessors - (void)setAssetsGroup:(ALAssetsGroup *)assetsGroup { _assetsGroup = assetsGroup; // Extract three thumbnail images NSInteger thumbnailImagesCount = MIN(3, assetsGroup.numberOfAssets); NSIndexSet *indexes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(assetsGroup.numberOfAssets-thumbnailImagesCount, thumbnailImagesCount)]; NSMutableArray *thumbnailImages = [NSMutableArray array]; [assetsGroup enumerateAssetsAtIndexes:indexes options:0 usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { if (result) { CGImageRef thumbnailImageRef = [result thumbnail]; if (thumbnailImageRef) { [thumbnailImages addObject:[UIImage imageWithCGImage:thumbnailImageRef]]; } else { [thumbnailImages addObject:[self blankImage]]; } } }]; self.thumbnailImages = [thumbnailImages copy]; [self setNeedsDisplay]; } - (UIImage *)blankImage { if (_blankImage == nil) { CGSize size = CGSizeMake(100.0, 100.0); UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); [[UIColor colorWithWhite:(240.0 / 255.0) alpha:1.0] setFill]; UIRectFill(CGRectMake(0, 0, size.width, size.height)); _blankImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); } return _blankImage; } @end