我如何使用 objective c 中的照片框架访问图库中的照片
How can i access the photo from gallery using Photo framework in objective c
我是照片框架的新手,我不知道如何使用它。我用过很多 link 但我对如何在 imageview 中显示图像感到困惑。
我想使用正在尝试的照片框架从图库中获取所有照片
NSMutableOrderedSet *recentsDataSource;
PHFetchResult *assetCollection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum | PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
for (PHAssetCollection *sub in assetCollection)
{
PHFetchResult *assetsInCollection = [PHAsset fetchAssetsInAssetCollection:sub options:nil];
for (PHAsset *asset in assetsInCollection)
{
[self.recentsDataSource addObject:asset];
}
}
if (self.recentsDataSource.count > 0)
{
NSArray *array = [self.recentsDataSource sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]]];
NSLog(@"Photo Array : %@",array);
self.recentsDataSource = [[NSMutableOrderedSet alloc]initWithArray:array];
}
我已经得到了这种类型的数组。
Photo Array : (
" 5A2ABD38-D724-42B1-939A-F557D5CCE9FC/L0/001 mediaType=1/0,
sourceType=1, (328x328), creationDate=2015-10-14 06:06:22 +0000,
location=0, hidden=0, favorite=0 ",
" 5391482F-9887-4518-9976-D5D544CDF8CA/L0/001 mediaType=1/0,
sourceType=1, (450x800), creationDate=2015-10-12 09:27:41 +0000,
location=0, hidden=0, favorite=1 ",
" 3B921984-6E79-4E4D-B70D-C7FFB0AC1C63/L0/001 mediaType=1/0,
sourceType=1, (3000x2002), creationDate=2012-08-08 09:25:30 +0000,
location=1, hidden=0, favorite=0 ",
" D64D501E-F85D-4EE8-9C79-414272621A80/L0/001 mediaType=1/0,
sourceType=1, (1668x2500), creationDate=2012-08-08 08:59:49 +0000,
location=1, hidden=0, favorite=0 ",
" 46A57980-9C55-42A8-9792-6BD98B25F01D/L0/001 mediaType=1/0,
sourceType=1, (3000x2002), creationDate=2012-08-08 06:22:11 +0000,
location=1, hidden=0, favorite=0 ",
" 1E040EE9-99A9-4325-AB1F-CBF4E45111DA/L0/001 mediaType=1/0,
sourceType=1, (4288x2848), creationDate=2011-03-12 10:47:25 +0000,
location=1, hidden=0, favorite=1 ",
" BF3A71CD-3065-43C0-A933-DD89BBE8C778/L0/001 mediaType=1/0,
sourceType=1, (4288x2848), creationDate=2009-10-09 08:39:20 +0000,
location=0, hidden=0, favorite=0 " )
如何在imageview上显示图片。
在 .h/.m 文件中添加这个
#import <Photos/Photos.h>
全局变量:
@property(nonatomic , strong) PHFetchResult *assetsFetchResults;
@property(nonatomic , strong) PHCachingImageManager *imageManager;
viewDidLoad 代码:
// Fetch all assets, sorted by date created.
PHFetchOptions *options = [[PHFetchOptions alloc] init];
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
_assetsFetchResults = [PHAsset fetchAssetsWithOptions:options];
_imageManager = [[PHCachingImageManager alloc] init];
numberOfItemsInSection 方法:
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return [_assetsFetchResults count];
}
UICollectionView cellForItemAtIndexPath:代码:
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellID" forIndexPath:indexPath];
UIImageView *imageView = (UIImageView *)[cell viewWithTag:101];
PHAsset *asset = _assetsFetchResults[indexPath.item];
[_imageManager requestImageForAsset:asset targetSize:imageView.frame.size contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage *result, NSDictionary *info)
{
imageView.image = result;
}];
[编辑]
访问图像:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
PHAsset *asset = _assetsFetchResults[indexPath.item];
[_imageManager requestImageForAsset:asset targetSize:CGSizeMake(200, 200) contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage *result, NSDictionary *info)
{
// result is the actual image object.
}];
}
我是照片框架的新手,我不知道如何使用它。我用过很多 link 但我对如何在 imageview 中显示图像感到困惑。
我想使用正在尝试的照片框架从图库中获取所有照片
NSMutableOrderedSet *recentsDataSource;
PHFetchResult *assetCollection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum | PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
for (PHAssetCollection *sub in assetCollection)
{
PHFetchResult *assetsInCollection = [PHAsset fetchAssetsInAssetCollection:sub options:nil];
for (PHAsset *asset in assetsInCollection)
{
[self.recentsDataSource addObject:asset];
}
}
if (self.recentsDataSource.count > 0)
{
NSArray *array = [self.recentsDataSource sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]]];
NSLog(@"Photo Array : %@",array);
self.recentsDataSource = [[NSMutableOrderedSet alloc]initWithArray:array];
}
我已经得到了这种类型的数组。
Photo Array : ( " 5A2ABD38-D724-42B1-939A-F557D5CCE9FC/L0/001 mediaType=1/0, sourceType=1, (328x328), creationDate=2015-10-14 06:06:22 +0000, location=0, hidden=0, favorite=0 ", " 5391482F-9887-4518-9976-D5D544CDF8CA/L0/001 mediaType=1/0, sourceType=1, (450x800), creationDate=2015-10-12 09:27:41 +0000, location=0, hidden=0, favorite=1 ", " 3B921984-6E79-4E4D-B70D-C7FFB0AC1C63/L0/001 mediaType=1/0, sourceType=1, (3000x2002), creationDate=2012-08-08 09:25:30 +0000, location=1, hidden=0, favorite=0 ", " D64D501E-F85D-4EE8-9C79-414272621A80/L0/001 mediaType=1/0, sourceType=1, (1668x2500), creationDate=2012-08-08 08:59:49 +0000, location=1, hidden=0, favorite=0 ", " 46A57980-9C55-42A8-9792-6BD98B25F01D/L0/001 mediaType=1/0, sourceType=1, (3000x2002), creationDate=2012-08-08 06:22:11 +0000, location=1, hidden=0, favorite=0 ", " 1E040EE9-99A9-4325-AB1F-CBF4E45111DA/L0/001 mediaType=1/0, sourceType=1, (4288x2848), creationDate=2011-03-12 10:47:25 +0000, location=1, hidden=0, favorite=1 ", " BF3A71CD-3065-43C0-A933-DD89BBE8C778/L0/001 mediaType=1/0, sourceType=1, (4288x2848), creationDate=2009-10-09 08:39:20 +0000, location=0, hidden=0, favorite=0 " )
如何在imageview上显示图片。
在 .h/.m 文件中添加这个
#import <Photos/Photos.h>
全局变量:
@property(nonatomic , strong) PHFetchResult *assetsFetchResults;
@property(nonatomic , strong) PHCachingImageManager *imageManager;
viewDidLoad 代码:
// Fetch all assets, sorted by date created.
PHFetchOptions *options = [[PHFetchOptions alloc] init];
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
_assetsFetchResults = [PHAsset fetchAssetsWithOptions:options];
_imageManager = [[PHCachingImageManager alloc] init];
numberOfItemsInSection 方法:
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return [_assetsFetchResults count];
}
UICollectionView cellForItemAtIndexPath:代码:
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellID" forIndexPath:indexPath];
UIImageView *imageView = (UIImageView *)[cell viewWithTag:101];
PHAsset *asset = _assetsFetchResults[indexPath.item];
[_imageManager requestImageForAsset:asset targetSize:imageView.frame.size contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage *result, NSDictionary *info)
{
imageView.image = result;
}];
[编辑]
访问图像:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
PHAsset *asset = _assetsFetchResults[indexPath.item];
[_imageManager requestImageForAsset:asset targetSize:CGSizeMake(200, 200) contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage *result, NSDictionary *info)
{
// result is the actual image object.
}];
}