1

PSTCollectionView クラスを使用して、iPhone のカメラ ロールから写真を読み込みます。ただし、すべてが読み込まれるまで待つのではなく、読み込まれている間に写真が表示されるようにします。私のコードは次のようになります。

-(void) loadAssetGroups {

        void (^assetGroupEnumerator)
        (ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) {
            NSLog(@"group....%@",[group valueForProperty:ALAssetsGroupPropertyName]);
            [self loadAssetForGroup:group];
            }
        };

        void (^assetGroupEnumberatorFailure)(NSError *) = ^(NSError *error) {
            NSLog(@"A problem occured. Error: %@", error.localizedDescription);
        };

        [[ImagePickerViewController defaultAssetsLibrary] enumerateGroupsWithTypes:ALAssetsGroupAll
                                     usingBlock:assetGroupEnumerator
                                   failureBlock:assetGroupEnumberatorFailure];


}

-(void) loadAssetForGroup:(ALAssetsGroup*)group {
    ALAssetsFilter *filter = [ALAssetsFilter allPhotos];
    [group setAssetsFilter:filter];
    __block NSMutableArray *indexes = [NSMutableArray arrayWithCapacity:0];

    [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
        if (result == nil)
        {
            return;
        }

        if (![self.allPhotos containsObject:result]) {

            [self.assets setValue:result forKey:[result valueForProperty:ALAssetPropertyURLs]];

            [self.allPhotos addObject:result];

            [indexes addObject:[NSIndexPath indexPathForItem:[self.allPhotos count]-1 inSection:0]];
            [self.collectionView performSelectorOnMainThread:@selector(insertItemsAtIndexPaths:) withObject:[NSArray arrayWithObject:[NSIndexPath indexPathForItem:self.allPhotos.count-1 inSection:0]] waitUntilDone:NO];
        }

    }];
}

コンソールから、collectionView が最初のいくつかのオブジェクト (画面に表示される) に対して dataSource メソッドcellForItemAtIndexPathを呼び出していることがわかりますが、collectionView が更新されるまで、すべての写真が読み取られるのを待つ必要があります。

「外出先で」もっと実行する方法はありますか?

4

0 に答える 0