Desde el AssetsLibrary
es obsoleta, por favor utilice la Photos
marco en su lugar (iOS 8 y posterior).
// Deprecated!
import AssetsLibrary
// Swift 3.0
let assetsLibrary = ALAssetsLibrary()
assetsLibrary.addAssetsGroupAlbum(withName: "NewAlbum", resultBlock: { assetsGroup in
print(assetsGroup == nil ? "Already created" : "Success")
}, failureBlock: { error in
print(error)
})
Puede utilizar el objeto compartido PHPhotoLibrary
para crear nuevas fotos, pero no se les puede dar nombres específicos, ya que va a trabajar con los activos que necesitan ser gestionado por el Photos.app. Cada activo tiene propiedades específicas. Puede buscar objetos, solicitar cambios, cargar activos/miniaturas y almacenar en caché, etc.
Para crear un álbum personalizado , utilice PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle:
).
breve ejemplo:
// Swift 3.0
func createPhotoLibraryAlbum(name: String) {
var albumPlaceholder: PHObjectPlaceholder?
PHPhotoLibrary.shared().performChanges({
// Request creating an album with parameter name
let createAlbumRequest = PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: name)
// Get a placeholder for the new album
albumPlaceholder = createAlbumRequest.placeholderForCreatedAssetCollection
}, completionHandler: { success, error in
if success {
guard let placeholder = albumPlaceholder else {
fatalError("Album placeholder is nil")
}
let fetchResult = PHAssetCollection.fetchAssetCollections(withLocalIdentifiers: [placeholder.localIdentifier], options: nil)
guard let album: PHAssetCollection = fetchResult.firstObject else {
// FetchResult has no PHAssetCollection
return
}
// Saved successfully!
print(album.assetCollectionType)
}
else if let e = error {
// Save album failed with error
}
else {
// Save album failed with no error
}
})
}
No se olvide de import Photos
biblioteca.
Para crear un nuevo elemento de foto en ese álbum, utilice el PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle:
).
// Swift 3.0
func createPhotoOnAlbum(photo: UIImage, album: PHAssetCollection) {
PHPhotoLibrary.shared().performChanges({
// Request creating an asset from the image
let createAssetRequest = PHAssetChangeRequest.creationRequestForAsset(from: photo)
// Request editing the album
guard let albumChangeRequest = PHAssetCollectionChangeRequest(for: album) else {
// Album change request has failed
return
}
// Get a placeholder for the new asset and add it to the album editing request
guard let photoPlaceholder = createAssetRequest.placeholderForCreatedAsset else {
// Photo Placeholder is nil
return
}
albumChangeRequest.addAssets([photoPlaceholder] as NSArray)
}, completionHandler: { success, error in
if success {
// Saved successfully!
}
else if let e = error {
// Save photo failed with error
}
else {
// Save photo failed with no error
}
})
}
ACTUALIZACIÓN:
Tenemos que solicitar el acceso a poder utilizar la biblioteca de Fotos:
PHPhotoLibrary.requestAuthorization { status in
switch status {
...
}
A partir de IOS 10 y por encima también tenemos que añadir la entrada para el acceso en el archivo .Plist objetivo de "privacidad - Fototeca Uso Descripción":
<key>NSPhotoLibraryUsageDescription</key>
<string>Access to photos is needed to provide app features</string>
hola ... ¿ha encontrado cómo dar un nombre personalizado a las imágenes? –