[TIL] 2021.02.01
👩🏻💻 今日の勉強内容 Photosフレームワーク(ガイドコース2コメントサイト)
-PhotosフレームワークはiOSとMacOSに写真アプリケーションと写真拡張機能をサポートするクラスを提供しています.Photosフレームワークを使用すると、iCloudフォトライブラリを含むiOSとTVOSから直接写真とビデオにアクセスできます.このフレームワークでは、画面に表示および再生するリソースを検索したり、画像またはビデオを編集したり、アルバム、特別な時刻、iCloud共有アルバムなどのリソースを使用して操作できます. Info.plistは のPrivacy-Photo Libraryの使用説明を追加しましたアクセスライセンス Photos. Assetの結果を取得するFetchResultとサムネイルを取得するImageManagerを宣言します. Assetを呼び出します. CollectionView
UIImagePicker Controlを使用していますが、複数の写真を選択したいので、CollectionViewに資産データをインポートできるPhotoKitに変更します.PhotoKit検索でPHPickerが見つかったのですが、iOS 14以上から使えるようになった以外は役に立つようで、PHPickerに変えるかどうか考えています.明日PHPickerをもう一度勉強します.
-PhotosフレームワークはiOSとMacOSに写真アプリケーションと写真拡張機能をサポートするクラスを提供しています.Photosフレームワークを使用すると、iCloudフォトライブラリを含むiOSとTVOSから直接写真とビデオにアクセスできます.このフレームワークでは、画面に表示および再生するリソースを検索したり、画像またはビデオを編集したり、アルバム、特別な時刻、iCloud共有アルバムなどのリソースを使用して操作できます.
let photoAurhorizationStatus = PHPhotoLibrary.authorizationStatus()
switch photoAurhorizationStatus {
case .authorized :
print("접근 허가됨")
self.requestCollection()
case .denied :
print("접근 불허")
case .notDetermined:
print("아직 응답하지 않음")
PHPhotoLibrary.requestAuthorization( { (status) in
switch status {
case .authorized:
print("사용자가 허용함")
self.requestCollection()
DispatchQueue.main.async {
self.collectionView.reloadData()
}
case .denied:
print("사용자가 불허함")
default: break
}
})
case .restricted:
print("접근 제한")
case .limited:
print("접근 어쩌구")
@unknown default:
print("접근 오류")
}
輸入 import Photos
var fetchResult: PHFetchResult<PHAsset>!
var imageManager: PHCachingImageManager = PHCachingImageManager()
let cameraRoll: PHFetchResult<PHAssetCollection> = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .smartAlbumUserLibrary, options: nil)
guard let cameraRollCollection = cameraRoll.firstObject else {
return
}
let fetchOptions = PHFetchOptions()
// 최신 순으로 불러오는 옵션
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
// asset 불러오기
self.fetchResult = PHAsset.fetchAssets(in: cameraRollCollection, options: fetchOptions)
接続extension PhotoLibraryViewController: UICollectionViewDataSource{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.fetchResult?.count ?? 0
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PhotoLibraryCell", for: indexPath) as? PhotoLibraryCell else { return UICollectionViewCell() }
let asset: PHAsset = fetchResult.object(at: indexPath.item)
imageManager.requestImage(for: asset, targetSize: CGSize(width: 100, height: 100), contentMode: .aspectFill, options: nil, resultHandler: { image, info in
cell.updateUI(image)
})
return cell
}
}
✍🏻 今日はね.UIImagePicker Controlを使用していますが、複数の写真を選択したいので、CollectionViewに資産データをインポートできるPhotoKitに変更します.PhotoKit検索でPHPickerが見つかったのですが、iOS 14以上から使えるようになった以外は役に立つようで、PHPickerに変えるかどうか考えています.明日PHPickerをもう一度勉強します.
Reference
この問題について([TIL] 2021.02.01), 我々は、より多くの情報をここで見つけました https://velog.io/@sainkr/TIL-2021.02.01テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol