How to get all photos moment wise using ALAssetLibrary in ios7?

后端 未结 2 1273
无人共我
无人共我 2021-01-25 14:13

I have problem to get photos in moment wise like apple iphone have in ios8. I have implemented for ios8 using PHAsset and Photos.framework. Now, when i run same code in ios7 dev

相关标签:
2条回答
  • 2021-01-25 14:45

    You are out of luck with iOS 7. AssetsLibrary as you observed returns only albums (Camera Roll, user albums). Even though the Photos App in iOS 7 shows Moments, there are no developer APIs in iOS 7 to get Moments.

    0 讨论(0)
  • 2021-01-25 14:53

    I found its solutions my self.

    + (ALAssetsLibrary *)defaultAssetsLibrary {
        static dispatch_once_t pred = 0;
        static ALAssetsLibrary *library = nil;
        dispatch_once(&pred, ^{
            library = [[ALAssetsLibrary alloc] init];
        });
        return library;
    }
    
    -(void)loadAssets{
        NSMutableArray *unSortArray = [[NSMutableArray alloc] init];
        ALAssetsLibrary *library = [MomentsVCTR defaultAssetsLibrary];
        [library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
            if (group == nil) {
                NSLog(@"Done!");
                [self manageLocalAssets:unSortArray];
            }
            [group setAssetsFilter:[ALAssetsFilter allAssets]];
            [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *innerStop) {
                if (alAsset) {
                    [unSortArray addObject:alAsset];
                }
    
            }];
        } failureBlock: ^(NSError *error) {
            NSLog(@"No groups: %@",error);
        }];
    }
    
    -(void)manageLocalAssets:(NSMutableArray*)unSortArray{
        NSMutableArray *_resultArray = [[NSMutableArray alloc] init];
        NSDateFormatter *df = [[NSDateFormatter alloc] init];
        [df setDateFormat:@"dd-MMM-yyyy"];
        NSLog(@"in loadassets");
        NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
        NSArray *descriptors=[NSArray arrayWithObject: descriptor];
        NSArray *reverseOrder=[unSortArray sortedArrayUsingDescriptors:descriptors];
    
        for (int k=0; k<reverseOrder.count; k++) {
            ALAsset *asset = (ALAsset *)[reverseOrder objectAtIndex:k];
            NSString *dateStr = [df stringFromDate:[asset valueForProperty:ALAssetPropertyDate]];
            if (![self.arrDate containsObject:dateStr]) {
                [self.arrDate addObject:dateStr];
                [self.arrEventID addObject:@"0"];
                [self.arrEventName addObject:@"0"];
            }
            [_resultArray addObject:asset];
        }
        for (int i=0;i<self.arrDate.count;i++) {
            NSMutableArray *arr = [[NSMutableArray alloc] init];
            NSMutableArray *arr2 = [[NSMutableArray alloc] init];
            int tPhoto = 0;
            int tVideo = 0;
            for (int j=0; j<_resultArray.count; j++) {
                ALAsset *asset = (ALAsset*)[_resultArray objectAtIndex:j];
                NSString *dateStr = [df stringFromDate:[asset valueForProperty:ALAssetPropertyDate]];
                if ([[self.arrDate objectAtIndex:i] isEqualToString:dateStr]) {
                    UIImage *latestPhotoThumbnail = [UIImage imageWithCGImage:[asset thumbnail]];
                    [arr addObject:latestPhotoThumbnail];
                    latestPhotoThumbnail = nil;
                    if ([[asset valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypeVideo]) {
                        [arr2 addObject:@"1"];
                        tVideo++;
                    }
                    else{
                        [arr2 addObject:@"0"];
                        tPhoto++;
                    }
                    NSDate *date = [asset valueForProperty:ALAssetPropertyDate];
                    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
                    [dateFormatter setLocale:[NSLocale currentLocale]];
                    [dateFormatter setDateFormat:@"dd-MMM-yyyy"];
                    [self.imageDateArray addObject:[dateFormatter stringFromDate:date]];
                    [self.imageIdArray addObject:[NSString stringWithFormat:@"%d",i]];
                }
            }
            [self.imagearray addObject:arr];
            [self.arrContentType addObject:arr2];
    
            [self.momentArray addObject:[NSString stringWithFormat:@"%lu",(unsigned long)arr.count]];
            [self.arrPhotoCount addObject:[NSString stringWithFormat:@"%d",tPhoto]];
            [self.arrVideoCount addObject:[NSString stringWithFormat:@"%d",tVideo]];
        }
        [self setButtonsSize];
        self.collection.dataSource = self;
        self.collection.delegate = self;
        [self.collection reloadData];
        [self.collection.collectionViewLayout invalidateLayout];
        self.footerView.hidden = TRUE;
        self.footerWebView.hidden = TRUE;
    
    }
    
    0 讨论(0)
提交回复
热议问题