自定义uiimagepickerrController 为什么会崩溃

Pages: 1/2
主题 : UIImagePickerController拍照会崩溃!求指导
级别: 圣骑士
可可豆: 2319 CB
威望: 2319 点
在线时间: 712(时)
发自: Web Page
来源于&&分类
UIImagePickerController拍照会崩溃!求指导&&&
iphone4s 7.1.2 调用系统相机点了拍照, 就崩溃了, 出现内存警告奇怪的是iPhone4的7.1.2没问题, iphone5s也没问题.为嘛啊!!!!!继续测试.....如果关闭后台所有软件就正常了.有没有办法在运行的时候 多占用点内存?[ 此帖被kerr在 20:08重新编辑 ]
just do it
级别: 新手上路
可可豆: 11 CB
威望: 11 点
在线时间: 199(时)
发自: Web Page
你把图片高保真压缩下,不行再设置为截取
级别: 骑士
UID: 485216
可可豆: 527 CB
威望: 499 点
在线时间: 785(时)
发自: Web Page
我的也会,也是4s的,第一次拍照出现内存警告,然后崩溃,第二次进去就不会了,这个难搞,不过毕竟用4s的用户比较少,认为可以忽略第一次拍照时的崩溃
级别: 侠客
UID: 482974
可可豆: 666 CB
威望: 489 点
在线时间: 212(时)
发自: Web Page
回 1楼(thousandnight) 的帖子
纯属好奇 怎么设置为截取啊
级别: 骑士
UID: 485216
可可豆: 527 CB
威望: 499 点
在线时间: 785(时)
发自: Web Page
回 1楼(thousandnight) 的帖子
不是的,是调用系统相机的时候,刚执行到拍照时就崩溃,还没有拿到图片,不过我想自定义相机应该不会,因为系统相机消耗内存比较大
级别: 新手上路
可可豆: 11 CB
威望: 11 点
在线时间: 199(时)
发自: Web Page
回 3楼(mengSmile) 的帖子
没表达清楚,就是UIImagePickerControllerEditedImage
级别: 新手上路
可可豆: 11 CB
威望: 11 点
在线时间: 199(时)
发自: Web Page
回 4楼(swimming2015) 的帖子
还没拿到图片那就没办法了,一点击拍照就内存飙升太恐怖,一般都是拍完巨卡可能点击use photo感觉没反应,要不就直接退出
级别: 圣骑士
可可豆: 2319 CB
威望: 2319 点
在线时间: 712(时)
发自: Web Page
回 4楼(swimming2015) 的帖子
我也是啊, 点了拍照就崩..还没点使用照片呢!
just do it
级别: 圣骑士
可可豆: 2319 CB
威望: 2319 点
在线时间: 712(时)
发自: Web Page
回 6楼(thousandnight) 的帖子
没拿到UIImage就崩了..疯了啊4s啊.....4都没问题啊..这什么情况啊
just do it
级别: 圣骑士
可可豆: 2319 CB
威望: 2319 点
在线时间: 712(时)
发自: Web Page
回 1楼(thousandnight) 的帖子
谢谢!&&之前是使用照片崩溃, 我处理了图片后现在就 点拍照崩溃了, 哎
just do it
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版9094人阅读
iOS(384)
转载自:http://blog.csdn.net/kingsley_cxz/article/details/9157093
1.UIImagePickerController的静态方法:
&&&&imagepicker = [[UIImagePickerController alloc]init];
&&&&//UIImagePickerController静态方法判断设备是否支持照相机/图片库/相册功能
&&&& typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
&&&& UIImagePickerControllerSourceTypePhotoLibrary,
&&&& UIImagePickerControllerSourceTypeCamera,
&&&& UIImagePickerControllerSourceTypeSavedPhotosAlbum
&&& BOOL isCameraSupport = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];
&&& NSLog(@&support camera:%d&,isCameraSupport);
&&&&//UIImagePickerController静态方法判断设备是否支持前置摄像头/后置摄像头
&&&& typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraDevice) {
&&&& UIImagePickerControllerCameraDeviceRear,
&&&& UIImagePickerControllerCameraDeviceFront
&&& BOOL isRearSupport = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
&&& NSLog(@&rear support:%d&,isRearSupport);
&&&&//UIImagePickerController静态方法判断设备是否支持前置摄像头闪光灯/后置摄像头闪光灯
&&&& typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraDevice) {
&&&& UIImagePickerControllerCameraDeviceRear,
&&&& UIImagePickerControllerCameraDeviceFront
&&& BOOL isFlushSupport = [UIImagePickerController isFlashAvailableForCameraDevice:UIImagePickerControllerCameraDeviceRear];
&&& NSLog(@&rear flash support:%d&,isFlushSupport);
&&&&//UIImagePickerController静态方法返回前置摄像头/后置摄像头支持的拍摄类型
&&&& typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraDevice) {
&&&& UIImagePickerControllerCameraDeviceRear,
&&&& UIImagePickerControllerCameraDeviceFront
&&& //返回类型有照片和视频
&&&& enum {
&&&& UIImagePickerControllerCameraCaptureModePhoto,
&&&& UIImagePickerControllerCameraCaptureModeVideo
&&&& typedef NSUInteger UIImagePickerControllerCameraCaptureM
&&& NSArray* captureModes = [UIImagePickerController availableCaptureModesForCameraDevice:UIImagePickerControllerCameraDeviceRear];
&&& for (NSNumber* mode in captureModes) {
&&&&&&& NSLog(@&capture modes:%d&,[mode integerValue]);
&&&&//UIImagePickerController静态方法返回照相机/相册/照片库所支持的媒体类型
&&&& typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
&&&& UIImagePickerControllerSourceTypePhotoLibrary,
&&&& UIImagePickerControllerSourceTypeCamera,
&&&& UIImagePickerControllerSourceTypeSavedPhotosAlbum
&&& //返回类型有kUTTypeMovie,kUTTypeImage,其他类型均在&MobileCoreServices/MobileCoreServices.h&下
&&& NSArray* mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
&&& for (NSString* type in mediaTypes) {
&&&&&&& NSLog(@&media types:%@&,type);
2.UIImagePickerController属性详解:
&&&&//指定使用照相机模式,可以指定使用相册/照片库
&&& imagepicker.sourceType = UIImagePickerControllerSourceTypeC
&&&&//设置当拍照完或在相册选完照片后,是否跳到编辑模式进行图片剪裁。只有当showsCameraControls属性为true时才有效果
&&& imagepicker.allowsEditing = YES;
&&&&//设置拍照时的下方的工具栏是否显示,如果需要自定义拍摄界面,则可把该工具栏隐藏
&&& imagepicker.showsCameraControls& =&YES;
&&&&//设置使用后置摄像头,可以使用前置摄像头
&&& imagepicker.cameraDevice = UIImagePickerControllerCameraDeviceR
&&&&//设置闪光灯模式
&&&& typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraFlashMode) {
&&&& UIImagePickerControllerCameraFlashModeOff& = -1,
&&&& UIImagePickerControllerCameraFlashModeAuto = 0,
&&&& UIImagePickerControllerCameraFlashModeOn&& = 1
&&& imagepicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeA
&&&&//设置相机支持的类型,拍照和录像
&&& imagepicker.mediaTypes = @[(NSString*)kUTTypeImage,(NSString*)kUTTypeMovie];
&&&&//设置拍摄时屏幕的view的transform属性,可以实现旋转,缩放功能
&& // imagepicker.cameraViewTransform = CGAffineTransformMakeRotation(M_PI*45/180);
&& // imagepicker.cameraViewTransform = CGAffineTransformMakeScale(1.5, 1.5);
&&& //所有含有cameraXXX的属性都必须要sourceType是UIImagePickerControllerSourceTypeCamera时设置才有效果,否则会有异常
&&&&//设置UIImagePickerController的代理
&&& imagepicker.delegate =
-(void)showCamera{
&&&&//用模态方式呈现imagepicker
&&& [self presentModalViewController:imagepicker animated:YES];
使用&imagepicker.cameraViewTransform = CGAffineTransformMakeRotation(M_PI*45/180);旋转45度的效果:
使用imagepicker.cameraViewTransform
= CGAffineTransformMakeScale(1.5, 1.5);全屏的效果,同时imagepicker.showsCameraControls& =NO;隐藏工具栏:
使用imagepicker.allowsEditing
= YES;出现的图片编辑效果,只有当imagepicker.showsCameraControls&
=&YES;才有效果:
使用&imagepicker.mediaTypes
= @[(NSString*)kUTTypeImage,(NSString*)kUTTypeMovie];支持拍照和视频的前后对比效果:
3.UIImagePickerController回调详解:
//成功获得相片还是视频后的回调
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
&&&&//通过UIImagePickerControllerMediaType判断返回的是照片还是视频
&&& NSString* type = [info objectForKey:UIImagePickerControllerMediaType];
&&&&//如果返回的type等于kUTTypeImage,代表返回的是照片,并且需要判断当前相机使用的sourcetype是拍照还是相册
&&& if ([type isEqualToString:(NSString*)kUTTypeImage]&&picker.sourceType==UIImagePickerControllerSourceTypeCamera) {
&&&&&&&&//获取照片的原图
&&&&&&& UIImage* original = [info objectForKey:UIImagePickerControllerOriginalImage];
&&&&&&&&//获取图片裁剪的图
&&&&&&& UIImage* edit = [info objectForKey:UIImagePickerControllerEditedImage];
&&&&&&&&//获取图片裁剪后,剩下的图
&&&&&&& UIImage* crop = [info objectForKey:UIImagePickerControllerCropRect];
&&&&&&&&//获取图片的url
&&&&&&& NSURL* url = [info objectForKey:UIImagePickerControllerMediaURL];
&&&&&&&&//获取图片的metadata数据信息
&&&&&&& NSDictionary* metadata = [info objectForKey:UIImagePickerControllerMediaMetadata];
&&&&&&&&//如果是拍照的照片,则需要手动保存到本地,系统不会自动保存拍照成功后的照片
&&&&&&& UIImageWriteToSavedPhotosAlbum(edit, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
&&& }else{
&&&&//模态方式退出uiimagepickercontroller
&&& [imagepicker dismissModalViewControllerAnimated:YES];
//取消照相机的回调
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
&&& //模态方式退出uiimagepickercontroller
&&& [imagepicker dismissModalViewControllerAnimated:YES];
//保存照片成功后的回调
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error
& contextInfo:(void *)contextInfo{
&&& NSLog(@&saved..&);
4.自定义相机拍照画面:
&&&//设置拍照时的下方的工具栏是否显示,如果需要自定义拍摄界面,则可把该工具栏隐藏
&&& imagepicker.showsCameraControls& = NO;
&&& UIToolbar* tool = [[UIToolbar alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height-55, self.view.frame.size.width, 75)];
&&& tool.barStyle = UIBarStyleBlackT
&&& UIBarButtonItem* cancel = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelCamera)];
&&& UIBarButtonItem* add = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(savePhoto)];
&&& [tool setItems:[NSArray arrayWithObjects:cancel,add, nil]];
&&&//把自定义的view设置到imagepickercontroller的overlay属性中
&& imagepicker.cameraOverlayView =
-(void)cancelCamera{
&&& [imagepicker dismissModalViewControllerAnimated:YES];
-(void)savePhoto{
&&&&//拍照,会自动回调- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info,对于自定义照相机界面,拍照后回调可以不退出实现连续拍照效果
&&& [imagepicker takePicture];
5.UIImagePickerController是继承UINavigationController,所以可以push和pop一些viewcontroller进行导航效果。例如,自定义照相机画面的时候可以在拍摄完后push一个viewcontroller用于对照片进行编辑。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:954949次
积分:10481
积分:10481
排名:第1220名
原创:19篇
转载:1202篇
评论:48条
(35)(159)(31)(55)(22)(18)(26)(25)(4)(11)(17)(9)(25)(13)(34)(9)(2)(6)(12)(4)(20)(25)(36)(24)(18)(9)(6)(13)(3)(12)(4)(11)(3)(1)(4)(3)(4)(9)(5)(5)(20)(5)(5)(14)(10)(45)(81)(117)(7)(3)(23)(20)(105)(45)2015年5月 移动开发大版内专家分月排行榜第一2015年4月 移动开发大版内专家分月排行榜第一2014年9月 移动开发大版内专家分月排行榜第一
2015年3月 移动开发大版内专家分月排行榜第二2014年8月 移动开发大版内专家分月排行榜第二
2015年5月 移动开发大版内专家分月排行榜第一2015年4月 移动开发大版内专家分月排行榜第一2014年9月 移动开发大版内专家分月排行榜第一
2015年3月 移动开发大版内专家分月排行榜第二2014年8月 移动开发大版内专家分月排行榜第二
2015年5月 移动开发大版内专家分月排行榜第一2015年4月 移动开发大版内专家分月排行榜第一2014年9月 移动开发大版内专家分月排行榜第一
2015年3月 移动开发大版内专家分月排行榜第二2014年8月 移动开发大版内专家分月排行榜第二
2015年5月 移动开发大版内专家分月排行榜第一2015年4月 移动开发大版内专家分月排行榜第一2014年9月 移动开发大版内专家分月排行榜第一
2015年3月 移动开发大版内专家分月排行榜第二2014年8月 移动开发大版内专家分月排行榜第二
2015年5月 移动开发大版内专家分月排行榜第一2015年4月 移动开发大版内专家分月排行榜第一2014年9月 移动开发大版内专家分月排行榜第一
2015年3月 移动开发大版内专家分月排行榜第二2014年8月 移动开发大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 uiimagepicker 仿微信 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信