我剛開始一個新項目,我希望用戶能夠在設備庫中選擇其中一個圖像。通過代碼訪問圖像庫以在圖像視圖中顯示
我試圖通過使用ImageView
和UIStepper
來實現此目的。
我想將圖庫中的所有圖像寫入數組,並讓imageView
通過步進器的+和 - 按鈕(根據點擊選擇當前數組位置+1或-1)在數組中導航。
我剛開始一個新項目,我希望用戶能夠在設備庫中選擇其中一個圖像。通過代碼訪問圖像庫以在圖像視圖中顯示
我試圖通過使用ImageView
和UIStepper
來實現此目的。
我想將圖庫中的所有圖像寫入數組,並讓imageView
通過步進器的+和 - 按鈕(根據點擊選擇當前數組位置+1或-1)在數組中導航。
OK按事先商量獲取的圖像,這裏是項目:AssetLibraryPhotosViewer
還沒有做過廣泛的測試,但似乎在模擬器和真實設備上都運行正常
也許嘗試這樣的事情,選擇目錄,如果你想要一組特定的圖像。
NSMutableArray *result = [NSMutableArray array];
[[[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:nil] enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) {
NSString *path = [obj lastPathComponent];
[result addObject:path];
];
我認爲,你只需要從你的設備中檢索相機膠捲的照片。
如果是這樣,請嘗試使用此:
ALAssetsLibrary
void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != NULL) {
NSLog(@"See Asset: %@", result);
}
};
void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil) {
[group enumerateAssetsUsingBlock:assetEnumerator];
}
};
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:assetGroupEnumerator
failureBlock: ^(NSError *error) {
NSLog(@"Failure");
}];
OR
//獲取相機膠捲圖像
- (void)updateLastPhotoThumbnail {
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
[assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
NSInteger numberOfAssets = [group numberOfAssets];
if (numberOfAssets > 0) {
NSLog(@"numberOfPictures: %d",numberOfAssets);
//NSInteger lastIndex = numberOfAssets - 1;
int i = 0;
for (i = 0; i <= numberOfAssets-1; i++) {
[group enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:i] options:0 usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
UIImage *thumbnail = [UIImage imageWithCGImage:[result thumbnail]];
NSLog(@"theObject!!!! -- (%d) %@",i,thumbnail);
[cameraRollPictures addObject:thumbnail];
}];
}
}
} failureBlock:^(NSError *error) {
NSLog(@"error: %@", error);
}];
@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的顯示所需
你真棒。謝謝! – Exothug