Vous pouvez utiliser le cadre Photos
pour extraire les photos à partir de CameraRoll/Photos. Voici la version du code Swift 3.
Importer les photos cadre
import Photos
//Array of PHAsset type for storing photos
var images = [PHAsset]()
Utilisez cette fonction pour récupérer les photos, quelque part dans viewDidLoad
ou sur votre action où vous voulez aller chercher les photos disponibles.
func getImages() {
let assets = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: nil)
assets.enumerateObjects({ (object, count, stop) in
// self.cameraAssets.add(object)
self.images.append(object)
})
//In order to get latest image first, we just reverse the array
self.images.reverse()
// To show photos, I have taken a UICollectionView
self.photosCollectionView.reloadData()
}
Les repos sont la source de données UICollectionView et les délégués. Voir la méthode de source de données cellForItem
sur Comment afficher l'image.
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return images.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PhotoCollectionViewCell", for: indexPath) as! PhotoCollectionViewCell
let asset = images[indexPath.row]
let manager = PHImageManager.default()
if cell.tag != 0 {
manager.cancelImageRequest(PHImageRequestID(cell.tag))
}
cell.tag = Int(manager.requestImage(for: asset,
targetSize: CGSize(width: 120.0, height: 120.0),
contentMode: .aspectFill,
options: nil) { (result, _) in
cell.photoImageView?.image = result
})
return cell
}
Ajustez les délégués ci-dessous en fonction de vos besoins.
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let width = self.view.frame.width * 0.32
let height = self.view.frame.height * 0.179910045
return CGSize(width: width, height: height)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 2.5
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
Assurez-vous de garder la permission de photos ON. Si vous cliquez sur Ne pas autoriser, vous devez également gérer l'autorisation en utilisant PHPhotoLibrary.authorizationStatus()
Vous pouvez en savoir plus sur le cadre Photos.
Avez-vous essayé d'utiliser Framework Photos vous pouvez accéder aux photos de l'appareil photo rouleau ou de tout album sans utiliser imagePicker –
https://developer.apple.com/library/content/samplecode/UsingPhotosFramework/Introduction/Intro.html Vérifiez ce code d'échantillon par Apple –
Désolé si je sonne noob, je l'ai téléchargé et n'a pas pu fonctionner dans mon xcode 8.3. Et je n'ai aucune idée où télécharger xcode 9. – Spiral1ng