QBImagePickerControllerを使うときに見たPHAsset
QBImagePickerController
QBImagePickerControllerを使うと標準のUIImagePickerControllerでは画像を一枚ずつしか選択できなかったのが、複数選択が可能になります。
https://github.com/questbeat/QBImagePicker
QBImagePickerControllerのREAD.MEを読むと
画像が選択さてた時に呼ばれるdelegate method
- (void)qb_imagePickerController:(QBImagePickerController *)imagePickerController didFinishPickingAssets:(NSArray *)assets { // ここで選択した画像のリストはNSArrayでとれるらしい for (PHAsset* asset in assets) { // Do something with the asset } [self dismissViewControllerAnimated:YES completion:nil]; }
// Do something with the asset? UIImageではないらしい...
PHAssetをキャストしてUIImageに変換すると、コンパイルは通るものの実行時に変換できずに落ちました。
PHAssetとはなんぞやと思い、調べると
A PHAsset object represents an image or video file that appears in the Photos app, including iCloud Photos content.
とある。 ...写真とビデオファイルを扱うらしい。 んで、PHAssetだけでは、実際のimageをとってる訳ではないっぽい。 PHAssetを元にfetchする的なことが書いてある。
取ってくるにはPHImageManagerのrequestImageForAssetメソッドにPHAssetを渡すことでimageファイルが取れてくるようだ。
PHImageManager* manager = [PHImageManager new]; [manager requestImageForAsset:asset targetSize:CGSizeMake(70, 70) contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { // errorなければresultがUIImage }];
これで取れてきます。
ただ、targetSizeが70×70になっているので、通常の写真を使う場合は超荒くなるので、コピって使う際は調整してください。