Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
图像移动&;使用自定义摄像头覆盖iPhone SDK 3.1+;时调整大小不起作用;_Iphone_Iphone Sdk 3.1 - Fatal编程技术网

图像移动&;使用自定义摄像头覆盖iPhone SDK 3.1+;时调整大小不起作用;

图像移动&;使用自定义摄像头覆盖iPhone SDK 3.1+;时调整大小不起作用;,iphone,iphone-sdk-3.1,Iphone,Iphone Sdk 3.1,我曾经使用老式的方法在相机屏幕上添加一个覆盖层,效果很好。然而,自从3.1问世以来,苹果公司坚持要求我使用API添加一个覆盖层。我很快得到了覆盖工作,但似乎如果我使用自定义覆盖,那么移动和调整大小屏幕没有响应,我只能使用或重新拍摄,实际上不能调整和移动。下面是我正在使用的代码。我尝试了几种不同的方法,但唯一能够真正启用移动和调整大小的方法是删除添加自定义覆盖视图的线 有什么想法吗 UIImage *image = [UIImage imageNamed:@"camera-template-lon

我曾经使用老式的方法在相机屏幕上添加一个覆盖层,效果很好。然而,自从3.1问世以来,苹果公司坚持要求我使用API添加一个覆盖层。我很快得到了覆盖工作,但似乎如果我使用自定义覆盖,那么移动和调整大小屏幕没有响应,我只能使用或重新拍摄,实际上不能调整和移动。下面是我正在使用的代码。我尝试了几种不同的方法,但唯一能够真正启用移动和调整大小的方法是删除添加自定义覆盖视图的线

有什么想法吗

UIImage *image = [UIImage imageNamed:@"camera-template-long.png"];
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] ;
imgView.image = image;

UIView *overlayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
overlayView.opaque = NO;
[overlayView addSubview:imgView];

UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;        
picker.showsCameraControls = YES;
picker.cameraOverlayView = overlayView;
picker.delegate = self;
picker.allowsEditing = YES;

[self presentModalViewController:picker animated:YES];

allowediting
/
showsCameraControls
属性设置为NO,将原始视图准备为
cameraOverlayView
,并使用
takePicture
方法

然后,将直接调用,
imagePickerController:didFinishPickingMediaWithInfo:


请尝试以下代码:

- (void)foo {
  UIImagePickerController *controller = [[[UIImagePickerController alloc] init] autorelease]; 
  controller.sourceType = UIImagePickerControllerSourceTypeCamera; 
  controller.cameraOverlayView = self.cameraOverlay; 
  [self performSelector:@selector(moveOverlayViewToSublayer:) withObject:controller afterDelay:0.1f]; 
  controller.delegate = self; 
  [self presentModalViewController:controller animated:YES]; 
}
- (void) moveOverlayViewToSublayer:(UIImagePickerController*)controller { 
  CALayer *aLayer = self.cameraOverlay.layer.superlayer; 
  controller.cameraOverlayView = nil; 
  [aLayer addSublayer:self.cameraOverlay.layer]; 
}

我希望它能很好地工作。

一旦您使用
[overlayView setUserInteractionEnabled:NO]
停止覆盖视图处理输入。


这对我来说非常合适。我试图禁用userInteractionEnabled,但没有成功。

这仍然允许调整大小和移动?对不起,我误解了你的问题。您的问题是“添加自定义覆盖时如何激活调整大小和裁剪操作?”,不是吗?我已经改变了我的答案。这很有效,但有一个微妙的改变,我需要将allowsEditing和ShowsCameracControl都设置为YES。谢谢现在让我们看看苹果是否会批准它。我收到一条警告,说CALayer addSublayer无效。我会说否。它在所有版本上都不起作用,所选的答案实际上满足了我的需要。@Katokichi:如何在移动新帧时获得覆盖帧大小?那为什么需要覆盖?我试着按照上面的建议去做,覆盖图之后就不会显示了。我只需要覆盖图在实时摄像机视图上显示一帧。我的覆盖中不需要任何用户交互。