如何在 iOS 中以编程方式使用新的 PHPickerViewController 从照片加载图像?

问题描述 投票:0回答:1

我想使用新的

PHPickerViewController
从照片中选择图像,并且我想在加载控制器时直接打开
PHPickerViewController


像这样

Like this

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
         // Do any additional setup after loading the view.
         // TODO: - Here I want PhotoPicker
       }
    }
ios swift phpickerviewcontroller
1个回答
11
投票

当你想放置 PHPicker 时,你可以调用这个方法
openPHPicker()

  1. 您也可以使用此代码。用于打开新的PHPicker

  2. 有关 WWDC21 中 PHPicker 的更多知识PHPicker WWDC20 视频PHPicker WWDC21 视频

  3. WWDC PHPicker 笔记 PHPicker 笔记


import Photos
import PhotosUI


// MARK: - PHPicker Configurations (PHPickerViewControllerDelegate)
extension ViewController: PHPickerViewControllerDelegate {
    func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
         picker.dismiss(animated: true, completion: .none)
         results.forEach { result in
               result.itemProvider.loadObject(ofClass: UIImage.self) { reading, error in
               guard let image = reading as? UIImage, error == nil else { return }
               DispatchQueue.main.async {
                   self.profilePictureOutlet.image = image
                   // TODO: - Here you get UIImage
               }
               result.itemProvider.loadFileRepresentation(forTypeIdentifier: "public.image") { [weak self] url, _ in
                // TODO: - Here You Get The URL
               }
          }
       }
  }

   /// call this method for `PHPicker`
   func openPHPicker() {
       var phPickerConfig = PHPickerConfiguration(photoLibrary: .shared())
       phPickerConfig.selectionLimit = 1
       phPickerConfig.filter = PHPickerFilter.any(of: [.images, .livePhotos])
       let phPickerVC = PHPickerViewController(configuration: phPickerConfig)
       phPickerVC.delegate = self
       present(phPickerVC, animated: true)
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.