文档章节

iOS-简单拍照/取照片

 水一样的人儿
发布于 2015/12/22 17:08
字数 293
阅读 33
收藏 1

在iOS中,系统提供了一个拍照视图控制器UIImagePickerController,UIImagePickerController继承于UIViewController,可以直接present出来。

在一个按钮事件里调出拍照界面来

- (IBAction)click:(id)sender {

    

    self.controller = [[UIImagePickerController alloc]init];

    if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]) {

        self.controller.delegate = self;

        self.controller.allowsEditing = YES;

        self.controller.sourceType = UIImagePickerControllerSourceTypeCamera;//或者UIImagePickerControllerSourceTypeSavedPhotosAlbum

        self.controller.cameraDevice = UIImagePickerControllerCameraDeviceRear;

        [self presentViewController:self.controller animated:YES completion:nil];

    } else {

        NSLog(@"camera is not avaliable.");

    }

}

让这个试图控制器遵循UINavigationControllerDelegateUIImagePickerControllerDelegate协议

实现UIImagePickerControllerDelegate协议里的相应方法即可。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info ;

上面的方法拍完照片和取照片都会走。

例如

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {

        NSLog(@"%@", info);

        //不写dismiss方法的话还在拍照界面

        UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

        if (image == nil) {

            image = [info objectForKey:UIImagePickerControllerOriginalImage];

        }

        UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

        

//        [self dismissViewControllerAnimated:YES completion:nil];

        UIImagePickerController *controller = [[UIImagePickerController alloc]init];

        controller.delegate = self;

        controller.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;//为什么到不了照片库啊?

        [self.controller presentViewController:controller animated:YES completion:nil];


    } else if (picker.sourceType == UIImagePickerControllerSourceTypeSavedPhotosAlbum) {

        //image指选中的图片

        UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

        if (image == nil) {

            image = [info objectForKey:UIImagePickerControllerOriginalImage];

        }

        self.imageView.image = image;

//        [picker dismissViewControllerAnimated:YES completion:nil];

//        [self.controller dismissViewControllerAnimated:YES completion:nil];

      

    } else if (picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {

        

    }

    

    

}


- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {

    if (error == nil) {

        NSLog(@"save successfully");

    } else {

        NSLog(@"saving camera has a problem");

        NSLog(@"%@", [error description]);

    }

}


取消走下面方法:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;


© 著作权归作者所有

上一篇: iOS- transform形变
下一篇: iOS- UIProgressView
粉丝 9
博文 158
码字总数 76243
作品 0
杭州
私信 提问
华为被曝使用单反照片冒充 Nova 3 样片,误导用户

华为被曝使用单反照片冒充 Nova 3 样片,误导用户 2018-08-01 10:52编辑: yyuuzhu分类:业界动态来源:MacX 华为 招聘信息: iOS开发 iOS开发 iOS开发 app开发上架H5技术 app开发技术 图像处...

yyuuzhu
2018/08/01
0
0
iOS 9 开放公测,可以开开心心做一只小白鼠了

在 WWDC 上发布之后,苹果就对最新的 iOS 9 系统开始了 Beta 版测试。不过在此前测试版仅限于开发者使用,今天,苹果正式将 iOS 9 Beta 3 开放公测。 Beta 3 版对音乐 app 进行了重新设计,接...

oschina
2015/07/10
3.4K
12
iOS 7.1 初探

iOS 7.1 beta今晨已经悄悄到来,作为一个较大的版本迭代,这次苹果带来了一系列的细节改善和性能上的提升。Cult of Mac与9to5Mac第一时间对新固件进行了测试。 (P.S目前iOS 7.1 beta 1固件已...

oschina
2013/11/19
4.4K
22
iOS 5 正式发布,iPhone、iPad 和 iTouch 可更新

期待已久的苹果最新移动操作系统iOS 5 终于可以进行下载了。 iOS 5可以与iPhone 3GS,iPhone 4,iPhone 4S,iPod touch第三代、第四代,iPad和iPad 2相兼容。并且好消息是苹果iOS 5的升级将免...

红薯
2011/10/13
2.5K
4
迈绝伦团队工作汇总

项目负责人:余志恒 up_java后台:无 mz_java后台:修改同城下载文件名,完善论坛功能 bwk后台:无 项目负责人:季景胜 up_Android:无 upzg_Android:无 mzqk_Android:登陆界面重写,地图选...

风化的骆驼
2017/01/16
1
0

没有更多内容

加载失败,请刷新页面

加载更多

思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
18分钟前
0
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
42分钟前
1
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
3
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
5
0
高德API入门教程

项目需求 1、实现打开地图就能定位到中心显示标注点 2、点击标注显示保利可爱岛的详细信息 3、实现导航功能 <!doctype html><html><head> <meta charset="utf-8"> <meta http-......

我叫小糖主
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部