0

ユーザーがデバイス ギャラリーの画像の 1 つを選択できるようにする新しいプロジェクトを開始しました。

と を使用してこれを達成しようとしてImageViewUIStepperます。

ギャラリー内のすべての画像を配列に書き込みimageView、ステッパーの + および - ボタンを使用して配列をナビゲートしたい (クリックに応じて現在の配列位置 +1 または -1 を選択する)。

4

4 に答える 4

2

前の議論のとおり、ここにプロジェクトがあります: AssetLibraryPhotosViewer

大規模なテストは行っていませんが、シミュレーターと実際のデバイスの両方で問題なく動作するようです

于 2013-07-18T14:58:08.203 に答える
1

@Exothug は、全画面表示の写真にアクセスするデバイス ライブラリを列挙する方法のアイデアを提供します。

ALAssetsLibrary* assetLibrary = [[ALAssetsLibrary alloc] init];

[assetLibrary enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
    if (group) {
        [group enumerateAssetsUsingBlock:^(ALAsset* asset, NSUInteger index, BOOL* innerstop) {
             if (asset) {
                 ALAssetRepresentation *rep = [asset defaultRepresentation];
                 CGImageRef iref = [rep fullScreenImage];
                 if (iref) {
                     UIImage *image = [UIImage imageWithCGImage:iref scale:rep.scale
                                                    orientation:(UIImageOrientation)rep.orientation];
                     // process the image here
                 }
             }
         }];
    }
} failureBlock:^(NSError *error) {
    NSLog(@"failure: %@", [error localizedDescription]);
}];    

画像を配列に追加して処理することもできますが、ライブラリ内の画像の数によっては、最も効果的ではない場合があります。別のアプローチは、画像の URL / インデックスを使用してライブラリを反復処理し、必要に応じてライブラリから画像を取得して ImageView に表示することです。

于 2013-07-18T08:52:12.150 に答える
0

特定の画像グループが必要な場合は、ディレクトリを選択してください。

NSMutableArray *result = [NSMutableArray array];
 [[[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:nil] enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) {
    NSString *path = [obj lastPathComponent];
    [result addObject:path];
];
于 2013-07-18T08:17:27.707 に答える