iOS上传头像, 相册权限,相册权限,拍照上传,相册选择图片,拍照页面语言设置,保存到相册...

本文介绍了在iOS应用中如何管理相机和相册权限,并提供了使用UIImagePickerController从相机或相册选择图片的示例代码,同时展示了如何将图片保存至相册。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 权限

在打开相机拍照或者打开相册选择图片之前, 有必要先判断先是否有权限, 如果没有权限应该给个提示, 让用户自己去设置权限.

判断是否有相机权限:

//首先需要导入头文件: #import <AVFoundation/AVFoundation.h>

// 判断是够有全向访问相机
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (authStatus == AVAuthorizationStatusRestricted || authStatus ==AVAuthorizationStatusDenied)
{
    //无权限
    NSLog(@"没有访问相机权限");
    return;
}

判断是否有相册权限:

网上找了很多, 都是说用另一个类来判断的, 叫什么名字忘了, 但是是不能用的, 正确姿势是使用PHPhotoLibrary这个类.

//首先需要导入头文件: #import <Photos/PHPhotoLibrary.h>

// 判断是否有访问相册的权限
PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];
if (author == PHAuthorizationStatusRestricted || author ==PHAuthorizationStatusDenied){
    //无权限
    NSLog(@"没有访问相册的权限");
    return;
}

2. 拍照或者使用相册照片

从相机或者相册选择照片需要用到UIImagePickerController类.

从相机选择照片:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:imagePicker animated:YES completion:nil];

从相册选择照片:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

[self presentViewController:imagePicker animated:YES completion:nil];

3. 保存照片到相册

拍照方式选择照片时候, 一般需要将照片保存到本地相册中, 保存相册的代码只有一个方法, 如下所示.

// 将拍照的图片保存到本地
        UIImageWriteToSavedPhotosAlbum(originalImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), nil);

需要注意的是, 第一个参数是要保存的图片, 第二个参数是要执行方法的target, 第三个参数是selector, 第四个参数是传参数. 第三个参数selector, selector的方法名字一般是有参数的(测试写无参数的, 保存时候回崩溃).

//此方法一般是三个参数, 否则容易出错.
- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
    NSString *message = @"呵呵";
    if (!error) {
        message = @"成功保存到相册";
    }else
    {
        message = [error description];
    }
    NSLog(@"message is %@",message);
}

转载于:https://my.oschina.net/whforever/blog/702761

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值