Vous pouvez faire comme ceci: -
Créer un tableau vide de type PHAsset: -
fileprivate var imageAssets = [PHAsset]()
Fetch toutes les images en appelant cette fonction: -
func fetchGallaryResources(){
let status = PHPhotoLibrary.authorizationStatus()
if (status == .denied || status == .restricted) {
self.showAlert(cancelTitle: nil, buttonTitles:["OK"], title: "Oops", message:"Access to PHPhoto library is denied.")
return
}else{
PHPhotoLibrary.requestAuthorization { (authStatus) in
if authStatus == .authorized{
let imageAsset = PHAsset.fetchAssets(with: .image, options: nil)
for index in 0..<imageAsset.count{
self.imageAssets.append((imageAsset[index]))
}
}
}
Demande de l'imageComme ceci: -
let availableWidth = UIScreen.main.bounds.size.width
let availableHeight = UIScreen.main.bounds.size.height
Prenez l'image de ImageAssets dans une boucle ou un seul comme ça: -
PHImageManager.default().requestImage(for: imageAssets[0], targetSize: CGSize(width : availableWidth, height : calculatedCellWidth), contentMode: .default, options: nil, resultHandler: { (image, info) in
requestedImageView.image = image
})
Lorsque j'appelle cette fonction et que je veux définir l'image dans la vue de l'image, elle soulève: erreur fatale: Index hors plage. Il l'exécution asynchrone est encore reste. –
Avez-vous des images sur votre appareil? – Himanshu
Oui. Je l'ai résolu en plaçant le dernier code de ligne dans la fermeture autorisée et cela fonctionne. Mais je veux le faire de manière synchrone. –