UiImagePickerController的takePicture问题

我有一些问题创build我自己的自定义“拍照”button。 基本上,当我删除默认的控制,相机不再执行快门animation或经过编辑过程,直接进入委托方法。

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

(顺便说一句,我已经删除了我的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]; 

使用此代码,当我按下默认的“拍照”button时,快门animation将被触发,并显示“移动和缩放”视图。 按“select”后,代表被调用,我可以通过info访问编辑结果。

所以这里是我的新的初始化代码与自定义的“拍照”button,没有别的; 顺便说一下,我在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]; 

在这个例子中,当我点击我的自定义button时,没有animation被激发,没有编辑屏幕显示,委托被立即调用。

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

漂亮的难住这一个,有什么我需要做的didFinishPickingMediaWithInfo调用图像编辑器,或者我只是在我的初始化缺less的东西吗?

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

任何帮助不胜感激; 干杯!

所以显然“移动和裁剪”function是默认相机控制的一部分

当您使用照片库作为您的来源时,唯一的select是默认,所以它始终工作。

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

不是太难,只需要根据UIScrollView的缩放因子和contentoffset做一些math运算。