iOS8.0+获取相册最近的一张图片

引入头文件#import <Photos/Photos.h>

.h文件,声明方法

/**
 获取相册最近的一张图片
 
 @param screenshot 获取相册最近的一张截屏

 @param imageBlock 得到图片
 */
+ (void)getCurrentImage:(BOOL)screenshot callBack:(void (^)(UIImage *image))imageBlock;

.m文件,实现方法

+ (void)getCurrentImage:(BOOL)screenshot callBack:(void (^)(UIImage *))imageBlock {
    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
    if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied) {
        NSLog(@"相册权限未开放");
        return;
    }
    // 获取最近的照片
    PHAsset *asset = [[PHAsset fetchAssetsWithOptions:[PHFetchOptions new]] lastObject];
    if (screenshot) {
        // 获取屏幕快照相册
        PHAssetCollection *assetCollection = [[PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumScreenshots options:nil] firstObject];
        // 获取最近的屏幕快照
        asset = [[PHAsset fetchAssetsInAssetCollection:assetCollection options:[PHFetchOptions new]] lastObject];
    }
    if (!asset) {
        NSLog(@"相册里没有照片");
        return;
    }
    long long now = [[NSDate date] timeIntervalSince1970];
    long long creatTime = [asset.creationDate timeIntervalSince1970];
    if ((now - creatTime) > 86400) {
        NSLog(@"最新的照片是一天以前的");
        return;
    }
    CGSize targetSize = [UIScreen mainScreen].bounds.size;
    NSInteger index = targetSize.width == 414 ? 3 : 2;
    // 将PHAsset *类型的图片转成UIImage *类型
    [[PHCachingImageManager defaultManager] requestImageForAsset:asset targetSize:targetSize contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
        if (result && result.size.width == targetSize.width * index && result.size.height == targetSize.height * index && imageBlock) {
            imageBlock(result);
        }
    }];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,032评论 19 139
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 5,061评论 0 13
  • 这是终身难忘的一次旅游。三个初出茅庐的少女,怀揣200元现金和一架相机,从南京前往周庄,游历余秋雨书中的江南第一水...
    叶小米666阅读 404评论 2 2
  • 一杯敬远方阅读 167评论 0 0
  • 昨天画的,今天再看就觉得丑了这是什么情况。好吧,对比着修改下
    野马阿姨阅读 321评论 0 0