【Swift4】PhotosFrameworkでマイアルバムにアルバムを作成する方法
PhotosFrameworkにあるPHPhotoLibraryやPHAssetCollectionを使用して、写真アプリのマイアルバムにオリジナルのアルバムを作成する方法をご紹介します。
アルバムにオリジナルのアルバムを作成するには大きく分けて3つの工程があります。
- Info.plistにPhoto Libraryの使用許可を追加する。
- Photo Libraryへのアクセス許可を要求する。
- マイアルバムにアルバムを作成する。
どれも簡単なのでサクッとできると思います!
写真アプリのアルバムにオリジナルのアルバムを作成する方法
1. Info.plistにPhoto Libraryの使用許可を追加する
Privacy - Photo Library Additions Usage Description
Privacy - Photo Library Usage Description
の2つを追加してPhoto Libraryへアクセス許可のポップアップにでる文言を設定します。
2. Photo Libraryへのアクセス許可を要求する
import Photos
まずPhotosFrameworkをインポートします。
override func viewDidLoad() {
super.viewDidLoad()
// 写真使用の承認
switch (PHPhotoLibrary.authorizationStatus()) {
case .notDetermined: // フォトライブラリへのアクセスについてユーザーから明示的な回答を得ていない。
print("notDetermined")
PHPhotoLibrary.requestAuthorization({ status in
switch status {
case .notDetermined:
print("notDetermined")
break
case .authorized:
print("authorized")
break
case .denied:
print("denied")
break
case .restricted:
print("restricted")
break
}
})
break
case .authorized: // フォトライブラリへのアクセスについてユーザーが明示的に「許可」をした。
print("authorized")
break
case .denied: // フォトライブラリへのアクセスについてユーザーが明示的に「拒否」をした。
print("denied")
break
case .restricted: // フォトライブラリへのアクセスが許可されておらず、ユーザーはそのような許可を与えることはできない状態。
print("restricted")
break
}
}
次にPhoto Libraryへアクセス許可のポップアップを出す処理を記述します。
3.マイアルバムにアルバムを作成する
// アルバムの作成
func createNewAlbum(albumTitle: String, callback: @escaping (Bool) -> Void) {
if self.albumExists(albumTitle: albumTitle) {
callback(true)
} else {
PHPhotoLibrary.shared().performChanges({
PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: albumTitle)
}) { (isSuccess, error) in
callback(isSuccess)
}
}
}
// アルバムが既にあるか確認
func albumExists(albumTitle: String) -> Bool {
let albums = PHAssetCollection.fetchAssetCollections(with: PHAssetCollectionType.album, subtype:
PHAssetCollectionSubtype.albumRegular, options: nil)
for i in 0 ..< albums.count {
let album = albums.object(at: i)
if album.localizedTitle != nil && album.localizedTitle == albumTitle {
return true
}
}
return false
}
アルバム作成のためのメソッドを2つ追加します。
1つはアルバム作成のメソッドで、もう一つはアルバムが既にあるか確認するためのメソッドです。
self.createNewAlbum(albumTitle: "MyAppName", callback: { (isSuccess) in
if isSuccess {
print("成功")
}
else {
print("失敗")
}
})
アルバムを使いたいタイミングで、上記のように使えばオリジナルのアルバムが作成できます。