我是新的iOS开发者,我正试图在我的设备中获取所有图片。它在模拟器和iPhone 4,4s(iOS 6.0-> 7.1)上运行良好,但在iPhone 5s iOS 7.04上,我无法获取图像。它总是返回假。这是我的代码:
self.assetGroups = [NSMutableArray array];
[[ALAssetsManager defaultAssetsLibrary] enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
[self.assetGroups addObject:group];
} else {
// this is the end
[self displayPickerForGroup];
}
} failureBlock:^(NSError *error) {
NSLog(@"failse cmnr");
}];
- (void)displayPickerForGroup {}
和ALAsetsManager.m
:
#import "ALAssetsManager.h"
@implementation ALAssetsManager
+ (ALAssetsLibrary *)defaultAssetsLibrary {
static dispatch_once_t pred = 0;
static ALAssetsLibrary *library = nil;
dispatch_once(&pred, ^{
library = [[ALAssetsLibrary alloc] init];
});
return library;
}
@end
我的代码出了什么问题?
答案 0 :(得分:0)
note: Displaying Images from Iphone Photo Gallery into UICollection View .
**Step1:** Import these UIFrameworks AssetsLibrary.framework and Photo.framework ...
**Step 2:** viewControl.h
#import <UIKit/UIKit.h>
#import <AssetsLibrary/AssetsLibrary.h>
#import <Photos/Photos.h>
@interface ImageLibrary : UIViewController<UICollectionViewDataSource, UICollectionViewDelegate>
{
NSMutableArray *allAssetArray;
}
@property (strong, nonatomic) IBOutlet UICollectionView *myCollectionView;
@property (strong, nonatomic) IBOutlet UIImageView *largeImage;
@property (strong, nonatomic) IBOutlet UIView *myView;
@property (strong, nonatomic) IBOutlet UIButton *btnCloseOutlet;
- (IBAction)btnCloseAction:(id)sender;
@end
**Step 3:**
#import "viewControl.h"
#import "MyLibraryCell.h"
@interface ImageLibrary ()
@end
@implementation ImageLibrary
@synthesize myCollectionView;
@synthesize myView,largeImage;
@synthesize btnCloseOutlet;
- (void)viewDidLoad {
[super viewDidLoad];
[self.myCollectionView registerNib:[UINib nibWithNibName:@"MyLibraryCell" bundle:Nil] forCellWithReuseIdentifier:@"CELL"];
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
[flowLayout setItemSize:CGSizeMake(160, 120)];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
[self.myCollectionView setCollectionViewLayout:flowLayout];
allAssetArray = [[NSMutableArray alloc]init];
NSLog(@"count is %lu ",(unsigned long)allAssetArray.count);
[self findLargeImage];
NSLog(@"count is %lu ",(unsigned long)allAssetArray.count);
self.title = @"From Album";
self.myView.alpha = 0.0f;
btnCloseOutlet.layer.cornerRadius = btnCloseOutlet.bounds.size.width/2;
btnCloseOutlet.layer.borderColor=[UIColor blackColor].CGColor;
btnCloseOutlet.layer.borderWidth=2.0f;
self.myCollectionView.userInteractionEnabled = YES;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
#pragma mark - Number of Intems
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
NSLog(@"count is %lu ",(unsigned long)allAssetArray.count);
return allAssetArray.count;
}
#pragma mark - Number Of Secions
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
#pragma mark - CellForItemAtIndexPath
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyLibraryCell *cell = (MyLibraryCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"CELL" forIndexPath:indexPath];
NSLog(@"value is %@ ",[allAssetArray objectAtIndex:indexPath.row]);
[[PHImageManager defaultManager] requestImageForAsset:[allAssetArray objectAtIndex:indexPath.row]
targetSize:cell.myImage.bounds.size
contentMode:PHImageContentModeAspectFill
options:PHImageRequestOptionsVersionCurrent
resultHandler:^(UIImage *result, NSDictionary *info) {
dispatch_async(dispatch_get_main_queue(), ^{
cell.myImage.image = result;
});
}];
return cell;
}
#pragma mark collection view cell paddings
- (UIEdgeInsets)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
return UIEdgeInsetsMake(0, 0, 0, 0); // top, left, bottom, right
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
return 4.0;
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
self.myCollectionView.userInteractionEnabled = NO;
[UIView animateWithDuration:0.4
delay: 0.2
options: UIViewAnimationOptionCurveLinear
animations:^{
myView.alpha = 0.5;
myView.backgroundColor = [UIColor lightGrayColor];
}
completion:^(BOOL finished){
[UIView animateWithDuration:0.6 animations:^{
myView.frame = CGRectMake(10, 80, self.view.frame.size.width-20, self.view.frame.size.height-100);
myView.alpha = 1.0;
myView.backgroundColor = [UIColor whiteColor];
}];
}];
[[PHImageManager defaultManager] requestImageForAsset:[allAssetArray objectAtIndex:indexPath.row]
targetSize:self.largeImage.bounds.size
contentMode:PHImageContentModeAspectFill
options:PHImageRequestOptionsVersionCurrent
resultHandler:^(UIImage *result, NSDictionary *info) {
dispatch_async(dispatch_get_main_queue(), ^{
self.largeImage.image = result;
});
}];
}
-(void)findLargeImage
{
PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
PHFetchResult *result = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions];
[result enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {
[allAssetArray addObject:asset];
}];
}
- (IBAction)btnCloseAction:(id)sender {
self.myCollectionView.userInteractionEnabled = YES;
[UIView animateWithDuration:0.4
delay: 0.2
options: UIViewAnimationOptionCurveLinear
animations:^{
myView.alpha = 0.5;
myView.backgroundColor = [UIColor lightGrayColor];
}
completion:^(BOOL finished){
[UIView animateWithDuration:0.4 animations:^{
myView.alpha = 0.0;
}];
}];
}
@end