美文网首页iOS经验总结
iOS8.0+获取相册最近的一张图片

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

作者: _moses | 来源:发表于2017-07-05 23:22 被阅读3547次
    引入头文件#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);
            }
        }];
    }
    

    相关文章

      网友评论

        本文标题:iOS8.0+获取相册最近的一张图片

        本文链接:https://www.haomeiwen.com/subject/psdxhxtx.html