http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3249|回复: 5

[新手开发之旅] 【iOS新手开发之旅】使用系统相机和相册

[复制链接]
发表于 2018-12-10 17:17:49 | 显示全部楼层 |阅读模式
本帖最后由 竹林风 于 2018-12-11 15:28 编辑

  文章导航  

【iOS新手开发之旅】   http://www.sufeinet.com/thread-24000-1-1.html


首先要打开项目工程里面的相机和相册权限

找到项目中的info.plist 添加如下两个权限设置

A5312F8CA9B1C295DB1E3EC5E7D7EEB4.png

1.调用系统相机

[Objective-C] 纯文本查看 复制代码
- (void)openCamera{
    
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    
    //实现协议<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
    picker.delegate = self;
    
    picker.allowsEditing = YES; //可编辑
    
    //判断是否可以打开照相机
    
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
        //摄像头
        
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        
        [self presentViewController:picker animated:YES completion:nil];
        
    }else{
        NSLog(@"没有摄像头");
    }
}


2.打开相册

[Objective-C] 纯文本查看 复制代码
/**
 
 *  打开相册
 
 */

-(void)openPhotoLibrary

{
    
    // Supported orientations has no common orientation with the application, and [PUUIAlbumListViewController shouldAutorotate] is returning YES
    // 进入相册
    
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
    {
        UIImagePickerController *imagePicker = [[UIImagePickerController alloc]init];
        
        imagePicker.allowsEditing = YES;
        
        imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        
        imagePicker.delegate = self;
        
        [self presentViewController:imagePicker animated:YES completion:^{
            NSLog(@"打开相册");
        }];
        
    }else{
       NSLog(@"不能打开相册");
    }
}


实现代理方法

[Objective-C] 纯文本查看 复制代码
#pragma mark - UIImagePickerControllerDelegate

// 拍照完成回调

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
    
    NSLog(@"finish..");

    NSString *type = [info objectForKey:UIImagePickerControllerMediaType];
    //当选择的类型是图片
    if ([type isEqualToString:@"public.image"])
    {
//        __weak typeof(self)weakSelf = self;
        [picker dismissViewControllerAnimated:YES completion:^{
            UIImage* image = [info objectForKey:UIImagePickerControllerEditedImage];
            self->_imgPicker.image = image;
        }];
        
    }
    
}

//进入拍摄页面点击取消按钮

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

{
    
    [self dismissViewControllerAnimated:YES completion:nil];
    
}


运行结果:

1.gif

附件: Test-CameraPhoto.zip (158.26 KB, 下载次数: 0)


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2018-12-10 17:17:50 | 显示全部楼层
相机是只能在真机中使用的,模拟器是不能用的。
 楼主| 发表于 2018-12-10 17:17:51 | 显示全部楼层
self->_imgPicker.image = image;

这里如果直接这样写:_imgPicker.image = image;会报下面的警告:
162438B99BA67AD891AB81B72B4BA929.png

去除方法 第一种可以用上面的写法,还有一种就是

Building Settings
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF=NO
发表于 2018-12-10 17:43:16 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-11 14:20:58 | 显示全部楼层
强烈支持楼主ing……
发表于 2018-12-13 15:26:06 | 显示全部楼层
我只是路过打酱油的。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-8 11:49

© 2014-2021

快速回复 返回顶部 返回列表