PhotosのPHAssetCollection取得方法のメモ
iOSのPhotosフレームワーク、あるいは標準のPhotos(写真)アプリの話。Photosフレームワークのどのメソッドでどのタイプを指定したときにどのアルバムが取れるのか?そのアルバムって何?というのがAPIリファレンス読んでるだけだとよくわからなかったので実際に取得して確認してみた。
写真アプリにおける分類
iOS 14.5現在の写真アプリを見ると、一番左に「ライブラリ」タブがあり、
・年別
・月別
・日別
・すべての写真
が選択できる。
また「アルバム」タブには「マイアルバム」セクションがあり、
・最近の項目
・お気に入り
・ユーザーが作成した各種アルバム
が並ぶ。
続いて「ピープルと撮影地」があり、
・人物
・撮影地
ごとに写真がまとめられている。
続いて「メディアタイプ」セクションに
・ビデオ
・セルフィー
・ポートレート
・パノラマ
・スクリーンショット
・画面収録
が並ぶ。「その他」セクションは省略。
PhotosでのPHAssetCollectionの取得方法
## スマートアルバム
たとえばわかりやすいのでいうと、「メディアタイプ」セクションの「ビデオ」に相当するアルバムは次のように取得する。
let videoAssetCollection = PHAssetCollection.fetchAssetCollections(
with: .smartAlbum,
subtype: .smartAlbumVideos,
options: nil
).firstObject
この「ビデオ」や、「スクリーンショット」等、システムが自動で生成するアルバムはスマートアルバム(smart album)と呼ばれるらしい。
## モーメント
「モーメント」(moments)は、fetchMomentsメソッドか、
let result = PHAssetCollection.fetchMoments(with: nil)
return result.objects(at: IndexSet(0..<result.count))
またはfetchAssetCollectionsで.momentを指定して取得できる。
let result = PHAssetCollection.fetchAssetCollections(with: .moment, subtype: .any, options: nil)
return result.objects(at: IndexSet(0..<result.count))
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/