• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Swiftについて教えてください)

SwiftでUICollectionViewCellに写真を表示させる方法

このQ&Aのポイント
  • カメラロールの写真をSwiftのUICollectionViewCellに読み込んで表示させる方法を教えてください。
  • 写真をタッチしたときに、その写真のURLを取得し、配列に格納する方法を教えてください。
  • UICollectionViewCellのdidSelectItemAtIndexPathメソッド内で、写真をタッチしたときの処理についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> URL(保存されているカメラロールまでのパス?)を取得し、配列に格納しようと考えています。 前回の http://bekkoame.okwave.jp/qa9098020.html の質問でassetsにALAssetオブジェクトの配列を取得できていますから、 カメラロールの画像を扱いたいなら、そのALAssetを使えばよいはずです。 なので、なぜURLを配列に格納したいのかわかりませんが、 どうしてもURLを取得したいなら、今回の質問にも書かれている [[asset defaultRepresentation] url] をswiftに変換して asset.defaultRepresentation().url() とすればよいです。 ちなみに、これで得られるURLは一般的な 「http://~」や「file://~」のスキームでなく 「assets-library://~」というスキームで表現されているため、 このURLを指定してカメラロールの画像を使用するには 結局AssetLibraryを使ってALAssetオブジェクトを得る必要があります。 このURLを指定してALAssetオブジェクトを得るメソッドが、 質問にも書かれている「assetForURL」ですが、面倒な非同期ブロックを 記述して取得する必要があります。そうすると、また前回の質問のような 取得タイミングの問題が出てきます。 なので、ALAssetオブジェクトを取得できているなら、わざわざURLに変換して 格納しなくても、ALAssetオブジェクトをそのまま使った方が簡単です。 AssetLibraryのURLを保存する必要があるケースは、 指定されたカメラロールの画像をアプリ再起動後も再読み込みして 表示する(このためにAssetLibraryのURLを外部のファイルやサーバーに 保存する)ケースくらいじゃないかなと思います。

dkong
質問者

お礼

回答ありがとうございます。urlばかり考えていたのですが、取得しているassetを使うことで、やりたかったことが、スムーズにできました。ありがとうございました。

関連するQ&A