访问系统的相册

访问系统相册首先是需要权限!所以

首先 配置info.plist文件

在info.plist中添加一行Privacy - Photo Library Usage Description
并且类型选为String类型并且在后面填上一个字符串!
要访问系统的相册需要实现两个系统协议的方法!所以需要实现两个协议!
  • UINavigationControllerDelegate
  • UIImagePickerControllerDelegate

    接下来我们可以编程了!

编程:

弹出系统相册:
//首先判断系统的相册能不能用
  if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
    {
    //如果可以用,那么需要创建一个UIImagePickerController视图控制器然后在最后跳转到这个控制器,当然了这个是系统的
        UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];

        // 设置源类型 如果是图片库就是访问系统相册 如果是相机就是拍照

        // 设置代理
        imagePickerController.delegate = self;

        // 设置允许编辑
        imagePickerController.allowsEditing = YES;

        // 弹出
        [self presentViewController:imagePickerController animated:YES completion:^{
        //在这里写你想处理的代码
            NSLog(@"图片选择器已弹出");
        }];
    }
    else
    {
        NSLog(@"图片库不可用");
    }

当然了还有两个协议方法!

//第一个方法是当你在系统弹出的控制器中选择完图片以后,点击系统提供的`选择`按钮的操作,其中info参数是一个字典,字典中UIImagePickerControllerEditedImage字段是你在那个视图控制器中选择的图片(类型是UIImage)
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;

//这个函数是当你选择取消按钮的时候需要处理的事情
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;

示例:

// 已经结束选择 delegate需要让图片选择器dismiss
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
    // 将选择的图片赋值给imageview
    _imageView.image = info[UIImagePickerControllerEditedImage];

    //取消模态
    [picker dismissViewControllerAnimated:YES completion:nil];

}

// 点击取消按钮 delegate需要让图片选择器dismiss
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
   //取消模态
    [picker dismissViewControllerAnimated:YES completion:nil];
}
<think>好的,我现在要回答用户关于iOS第三方应用如何访问系统相册记录的问题。首先,我需要回顾用户提供的引用资料,特别是引用[1]、[2]、[3]中的相关内容,确保回答准确。 根据引用[1],iOS14之后PhotoKit增强了隐私控制,用户可以选择授权特定照片或视频给应用。这意味着应用在访问相册时,必须获得用户的明确许可,并且只能访问用户选择的资源。因此,在回答中需要提到PhotoKit框架,以及iOS14的新权限机制,比如PHPhotoLibrary的授权请求方式。 引用[3]提到了iOS应用权限列表的官方文档链接,这可能涉及到如何配置Info.plist中的权限描述,比如NSPhotoLibraryUsageDescription。用户需要知道应用在请求相册访问时必须提供使用理由,否则会被拒绝。这部分应该在步骤中详细说明。 另外,引用[2]和[4]、[5]虽然涉及第三方SDK和配置,但可能与相册访问的直接关系不大,但可能需要提及第三方库如YPImagePicker或TZImagePickerController,这些库封装了系统API,简化了开发流程,这也是用户可能关心的点。 接下来,我需要组织回答的结构,分步骤说明访问流程。首先,配置Info.plist,添加使用描述;然后使用PhotoKit请求权限,处理授权状态;最后,在用户授权后访问资源。同时,要强调iOS14的有限访问模式,允许用户选择部分照片,而不是整个相册。 可能的相关问题包括权限类型、如何实现选择部分照片、权限被拒绝后的处理等。需要确保这些问题在“相关问题”部分列出,并参考已有的引用资料。 最后,检查LaTeX格式是否正确,数学表达式是否使用$...$,独立公式用$$...$$,但这里可能用不上数学公式,所以主要关注代码块和引用标识是否正确添加。确保回答符合系统级指令的所有要求,尤其是引用标识的位置和格式。</think>### iOS第三方应用访问系统相册记录的实现流程 #### 1. 权限声明与配置 第三方应用需在`Info.plist`文件中声明**相册访问权限**,并描述用途(用户可见)。例如: ```xml <key>NSPhotoLibraryUsageDescription</key> <string>APP需要访问您的相册以上传图片</string> ``` 未声明会导致应用审核被拒[^3]。 #### 2. 使用PhotoKit请求权限 通过`PHPhotoLibrary`类向用户发起授权请求,代码示例: ```swift import Photos PHPhotoLibrary.requestAuthorization { status in switch status { case .authorized: // 允许访问所有照片 case .limited: // iOS14+:仅允许访问选定的照片 case .denied: // 用户拒绝授权 default: break } } ``` 用户可选择`Allow Access to All Photos`(完全访问)或`Select Photos`(部分访问)[^1]。 #### 3. 访问相册记录 授权后可通过以下API读取资源: - `PHAsset`: 表示单张照片/视频 - `PHAssetCollection`: 相册或时刻集合 - `PHImageManager`: 获取具体图像数据 示例代码(获取所有照片): ```swift let fetchOptions = PHFetchOptions() let allPhotos = PHAsset.fetchAssets(with: .image, options: fetchOptions) ``` #### 4. 监听权限变化 iOS提供`PHPhotoLibraryChangeObserver`协议,可监听相册内容或权限变更: ```swift class PhotoObserver: NSObject, PHPhotoLibraryChangeObserver { func photoLibraryDidChange(_ changeInstance: PHChange) { // 处理相册变动 } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值