美文网首页
iOS 授权相册保存图片(iOS 8及之后)

iOS 授权相册保存图片(iOS 8及之后)

作者: 山水域 | 来源:发表于2018-01-22 17:34 被阅读38次

需要引入的头文件

//相册
#import <Photos/Photos.h>

授权相册代码

[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
        
    }]

typedef NS_ENUM(NSInteger, PHAuthorizationStatus) {
    PHAuthorizationStatusNotDetermined = 0, // 用户还没有做出选择

    PHAuthorizationStatusRestricted,        // 家长控制,不允许访问
                                            
    PHAuthorizationStatusDenied,            //用户拒绝当前应用访问相册,我们需要提醒用户打开访问开关

    PHAuthorizationStatusAuthorized         // 用户允许当前应用访问相册

} PHOTOS_AVAILABLE_IOS_TVOS(8_0, 10_0);

示例

[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {

                if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied) {

                    UIAlertController *openPH = [UIAlertController alertControllerWithTitle:@"提示" message:@"无访问相册权限,是否去打开权限" preferredStyle:UIAlertControllerStyleAlert];
                    UIAlertAction *suerAction = [UIAlertAction actionWithTitle:@"打开" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
                        if ([[UIApplication sharedApplication] canOpenURL:url]) {
                            [[UIApplication sharedApplication] openURL:url];
                        }
                    }];
                    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

                    }];
                    [openPH addAction:suerAction];
                    [openPH addAction:cancelAction];
                    [self presentViewController:openPH animated:YES completion:nil];
                }else {
                    //要插入相册的图片
                    UIImage *tempImage = [self getScreenImage];
                    UIImageWriteToSavedPhotosAlbum(tempImage, self, @selector((image:didFinishSavingWithError:contextInfo:)), (__bridge void *)self);
                }
            }];

保存照片后的回调

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
    if (error) {
       NSLog(@"保存相册失败,请使用右上角分享尝试")
    }else {
      NSLog(@"成功保存到相册")
    }
}

相关文章

网友评论

      本文标题:iOS 授权相册保存图片(iOS 8及之后)

      本文链接:https://www.haomeiwen.com/subject/llqraxtx.html