UiImagePickerController takePicture问题

时间:2012-07-11 20:10:30

标签: iphone ios ios5 uiimagepickercontroller

我在创建自己的自定义“拍照”按钮时遇到了一些问题。基本上,当我删除默认控件时,相机不再进行快门动画或完成编辑过程,只需直接进行委托方法。

所以,这里有一些代码。起初我使用默认布局,如下所示:

(顺便说一句,我删除了用于确定硬件可用性的if语句 - 它们无关紧要。)

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

picker.delegate = self;
picker.allowsEditing = YES;


picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.showsCameraControls = YES;
picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;     

[self presentModalViewController:picker animated:YES];

使用此代码,当我按下默认的“拍照”按钮时,将启动快门动画,并显示“移动和缩放”视图。按下“选择”后,代理人就会被调用,我可以通过info访问编辑结果。

所以这是我的新初始化代码,带有自定义的“拍照”按钮,没有别的;顺便说一下,我正在我的ViewController的viewDidAppear方法中初始化这个UIImagePickerController

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

picker.delegate = self;
picker.allowsEditing = YES;

UIButton *shoot = [[UIButton alloc] initWithFrame:CGRectMake(110, 420, 100, 40)];
[shoot setTitle:@"Shoot" forState:UIControlStateNormal];
[shoot.titleLabel setTextColor:[UIColor whiteColor]];
[shoot addTarget:picker action:@selector(takePicture) forControlEvents:UIControlEventTouchUpInside];

picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[picker.cameraOverlayView addSubview:shoot];
picker.showsCameraControls = NO;

picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;

[self presentModalViewController:picker animated:YES];

在此示例中,当我点击自定义按钮时,不会触发任何动画,也不会显示编辑屏幕,会立即调用该委托。

有趣的是,如果我在上面的例子中只将showsCameraControls属性更改为YES,我的自定义按钮的行为与第一个示例中默认按钮的行为完全相同。

在这个问题上非常困难,我需要在didFinishPickingMediaWithInfo中调用图像编辑器,或者我在初始化时遗漏了什么?

我正在使用Xcode 4.3和iOS 5.1(该应用程序的目标是5.0)

任何帮助非常感谢;干杯!

1 个答案:

答案 0 :(得分:2)

显然,“移动和裁剪”功能是默认摄像机控件的一部分

当您使用照片库作为源时,唯一的选项是默认选项,因此它始终有效。

最后,我使用简单的滚动视图和一些叠加视图编写了自己的“移动和裁剪”视图来表示裁剪框。

不太难,只需要根据UIScrollView的缩放系数和内容偏移进行一些数学运算。