Como armazenar fotos em álbuns de fotos personalizados no iOS

Endereço original: https://www.cnblogs.com/muzichenyu/p/6006856.html

 

Entre os aplicativos convencionais no mercado, a maioria dos aplicativos tem a capacidade de armazenar imagens no álbum de fotos de seus próprios aplicativos. O método fornecido pela Apple só pode armazenar imagens no álbum de fotos do sistema. Veja como fazer isso:

Ideias de implementação:

   1. O pré-requisito para operar o álbum de fotos do sistema deve ser importado #import <Photos / Photos.h>

     2. Depois que o usuário clicar em salvar, primeiro determine se o usuário permite que o aplicativo acesse o álbum. Caso contrário, lembre ao usuário que a permissão é necessária para abrir.

     3. Após entrar no álbum do usuário, primeiro determine se há alguma alteração no álbum onde o App armazena as imagens.Se houver, armazene as imagens diretamente, caso contrário, crie um novo álbum.

     4. A imagem de espaço reservado é usada quando a imagem é armazenada no álbum.

Implementação:

    // 1. Obtenha o status de autorização do usuário, existem quatro status

    // 1) PHAuthorizationStatusNotDetermined não tenho certeza

    // 2) PHAuthorizationStatusRestricted, controle parental, rejeitado

    // 3) PHAuthorizationStatusDenied, negado

    // 4) Autorização PHAuthorizationStatusAuthorized

    PHAuthorizationStatus status = [PHPhotoLibrary authorityStatus];

 // 2. Determine o status de autorização do usuário

    if (status == PHAuthorizationStatusNotDetermined) {

            // Se o status for incerto, o conteúdo no bloco irá esperar até que a autorização seja concluída antes de chamar

        [PHPhotoLibrary requestAuthorization: ^ (PHAuthorizationStatus status) {

            // Chamado após a autorização ser concluída

            if (status == PHAuthorizationStatusAuthorized) {

      // Chame o método de armazenamento de imagens

                [self savePhoto];

            }

        }];

        // Se o acesso for permitido

    } else if (status == PHAuthorizationStatusAuthorized) {

   // Chame o método de armazenamento de imagens

        [self savePhoto];

        // Se a permissão for negada

    } outro {

        // Usando uma estrutura de terceiros, uma página aparece para solicitar que o usuário abra a autorização

       // [SVProgressHUD showInfoWithStatus: @ "Entre na interface de configurações -> encontre o aplicativo atual -> ligue a chave para permitir o acesso ao álbum"];

    }

 

    #pragma mark-Este método obtém se o álbum do aplicativo foi criado na galeria

  // A função deste método é pegar todos os álbuns do sistema e percorrer, caso exista um álbum, retornar ao álbum, caso não retorne nulo o parâmetro é o nome do álbum a ser criado

     - (PHAssetCollection *) fetchAssetColletion: (NSString *) albumTitle

    {

             // Obter todos os álbuns

             PHFetchResult * result = [PHAssetCollection fetchAssetCollectionsWithType: PHAssetCollectionTypeAlbum subtipo: PHAssetCollectionSubtypeAlbumRegular options: nil];

    // Percorre a matriz do álbum, se o álbum foi criado

    para (PHAssetCollection * assetCollection in result) {

        if ([assetCollection.localizedTitle isEqualToString: albumTitle]) {

            return assetCollection;

        }

    }

    return nil;

 }

 

   #pragma mark-Como salvar fotos

   - (vazio) savePhoto

  {

  // Modifique o álbum de fotos do sistema com o grão único do PHPhotoLibrary, chame performChanges, caso contrário, a Apple relatará um erro e lembrará você de usar

    [[PHPhotoLibrary sharedPhotoLibrary] performChanges: ^ {

        

        // Chame para determinar se existe um álbum com este nome

       PHAssetCollection * assetCollection = [self fetchAssetColletion:

@ "百 思"];

        // Crie um objeto para manipular a galeria

        PHAssetCollectionChangeRequest * assetCollectionChangeRequest;

        

        if (assetCollection) {

            // Já tenho um álbum

            assetCollectionChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection: assetCollection];

        } outro {

            // 1. Crie um álbum de fotos personalizado

            assetCollectionChangeRequest = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle: @ "百 思"];

        }

        

        // 2. Salve as imagens que você precisa salvar no álbum do sistema (as que são salvas aqui são as imagens em _imageView)

        PHAssetChangeRequest * assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage: _imageView.image];

        

        // 3. Adicione a imagem criada ao seu álbum de fotos

   // A imagem de espaço reservado é usada aqui, por que usar imagem de espaço reservado

  // Este bloco é executado de forma assíncrona. Use a imagem de espaço reservado para alocar uma memória para a imagem primeiro e depois atribua um valor à memória quando houver uma imagem.

        PHObjectPlaceholder * placeholder = [assetChangeRequest placeholderForCreatedAsset];

        [assetCollectionChangeRequest addAssets: @ [placeholder]];

        

        

    } completeHandler: ^ (BOOL sucesso, NSError * _Erro anulável) {

        // Uma interface pop-up lembra ao usuário se o salvamento foi bem sucedido

        if (erro) {

            // [SVProgressHUD showErrorWithStatus: @ "Falha ao salvar"];

        } outro {

           // [SVProgressHUD showSuccessWithStatus: @ "Salvar com sucesso"];

        }

        

        

    }];

}

 

 

     

Acho que você gosta

Origin blog.csdn.net/ximiaoweilai/article/details/105142076
Recomendado
Clasificación