2015-10-02 32 views
0

我正在使用照片框架從相機膠捲中選擇照片。從網格中選擇資源後,我使用PHImageManager訪問每個選定的圖像,然後將這些圖像存儲在數組中以顯示在我的集合視圖中。照片框架工作異常。

我使用這段代碼來實現這一目標: -

-(void)extractFullSizeImagesFromAssets{ 

    PHImageRequestOptions* options = [[PHImageRequestOptions alloc] init]; 
    options.version = PHImageRequestOptionsVersionCurrent; 
    options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat; 
    options.resizeMode = PHImageRequestOptionsResizeModeExact; 
    options.networkAccessAllowed = TRUE; 



    for (int i = 0; i < self.assets.count; i++) { 
     PHAsset * asset = [self.assets objectAtIndex:i]; 
     CGSize fullSizeImage = CGSizeMake(1000, (asset.pixelHeight/asset.pixelWidth) * 1000); 


     [[PHImageManager defaultManager] requestImageForAsset:asset 
            targetSize:fullSizeImage 
            contentMode:PHImageContentModeAspectFit 
             options:options 
           resultHandler:^(UIImage *image, NSDictionary *info){ 
            // [self.arr_images addObject:image]; 
            [_arr_fullSizeImages addObject:image]; 

     }]; 

    } 
} 

現在我的陣列「arr_fullSizeImages」包含了一些不同的隨機順序比我做選擇,同時拿起資產的方式提取的圖像。例如,如果我從相機膠捲中選擇了5張圖像,則有時在「相機膠捲」中索引爲3的所選圖像將保存在arr_fullSizeImages的索引5中。 我無法跟蹤此行爲的原因。請確定錯誤的來源以及如何解決這個錯誤。

謝謝。

回答

2

這是預期的行爲,默認爲requestImageForAsset異步執行。 如果你想要一個同步行爲(並且沒有隨機順序),只需設置

options.synchronous = YES; 
相關問題