我之前发现了类似的问题,但我尝试了同样的方法后,它并没有像我预期的那样工作。我的目标是从PHPickerViewController中获取PHAsset。为此,我使用此源代码作为基础代码,并将其与这里获取的内容结合起来进行实验。
此外,在尝试时,我已经在info.plist
文件中添加了“隐私-照片库用途说明”。
代码如下:
import UIKit
import PhotosUI
class ViewController: UIViewController {
@IBOutlet weak var myImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func buttonDidTap(_ sender: Any) {
var configuration = PHPickerConfiguration()
configuration.selectionLimit = 1
configuration.filter = .any(of: [.images, .videos])
let picker = PHPickerViewController(configuration: configuration)
picker.delegate = self
self.present(picker, animated: true, completion: nil)
}
}
extension ViewController: PHPickerViewControllerDelegate {
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
picker.dismiss(animated: true)
let identifiers = results.compactMap(\.assetIdentifier)
let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: identifiers, options: nil)
fetchResult.enumerateObjects { (asset, index, stop) -> Void in
PHImageManager.default().requestImage(for: asset,
targetSize: CGSize.init(width: 20, height: 20),
contentMode: PHImageContentMode.aspectFit,
options: nil) { (image: UIImage?, _: [AnyHashable : Any]?) in
self.myImageView.image = image
}
}
}
}
在尝试对代码进行调试之后,我发现 fetchResult.enumerateObjects
中的代码没有被调用,这就是为什么我无法获取图片的原因。
或许是我使用了错误的语法?有人可以帮我吗?