使用自定义相机覆盖iPhone SDK时,图像移动和调整大小不工作3.1+

StackOverflow https://stackoverflow.com/questions/1990573

  •  22-09-2019
  •  | 
  •  

我曾经使用添加叠加到摄像机屏幕的老派方法,以及工作得很好。然而,因为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];
有帮助吗?

解决方案 2

在整个问题消失,一旦你使用[overlayView setUserInteractionEnabled:NO];从处理输入停止重叠视图。

其他提示

设置两个allowsEditing / 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]; 
}

我希望它会很好地工作。

http://www.techques.com/问题/ 1-10178214 / cameraOverlayView-防止编辑与 - allowsEditing

这完全适用于我。我试图停用userInteractionEnabled但不成功。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top