iOS、PhotoKit(写真インポート)


🧐 写真から写真を取得する方法を段階的に理解しましょう.
Step 1
Info.plistを設定してください!

Step 2
Photosを入力し、PHassetを受信するpropertyを追加してください.

🍁 PHAsset


写真ライブラリの画像、ビデオ、またはLive Photoのメタデータ.

🍁 PHFetchResult


fetchメソッドでインポートした資産セット.

🍁 ViewController.swift

import Photos
class ViewController: UIViewController {
    var photos: PHFetchResult<PHAsset>?
    ...
}
Step 3
資産をインポートする時間です.アクセス権が許可されている場合、collectionビューをインポートして再ロードするためのaccessPhotos()メソッドを作成しました.

🍁 fetchAssets(in assetCollection: options:)


assetを取得する方法.戻り値はPHFetchResultです.

🍁 ViewController.swift


class ViewController: UIViewController {
  
    ...
  
    func accessPhotos() {
        PHPhotoLibrary.requestAuthorization { [weak self] status in
            if status == .authorized {
                self?.photos = PHAsset.fetchAssets(with: nil)
                DispatchQueue.main.async {
                    self?.collectionView.reloadData()
                }
            }
        }
    }
}
Step 4
画像を更新します.PHassetは描画データなので、PHImageManagerでデータを取得する必要があります.PHImageManagerプロパティを作成し、CellForItemAtで使用します.

🍁 PHImageManager


サムネイルとassetデータの検索または作成に使用するオブジェクトをプレビューします.

🍁 ViewController.swift

class ViewController: UIViewController { 
    ...
  
    let imageManager = PHImageManager()
  
    ...
}
extension ViewController: UICollectionViewDataSource {
    
    ...
  
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? Cell else {
            return UICollectionViewCell()
        }
        
        let asset = photos?[indexPath.item]
        cell.representedAssetIdentifier = asset?.localIdentifier
        imageManager.requestImage(for: asset!, targetSize: imageSize, contentMode: .default, options: nil) { image, _ in
            if cell.representedAssetIdentifier == asset?.localIdentifier {
                cell.image.image = image
            }
        }
        return cell
    }
}
🧐(詳細については、以下の説明を参照してください!)
Apple Developer Documentation