Mova e redimensionar a imagem não funcionando ao usar uma sobreposição de câmera personalizada iPhone SDK 3.1+

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

  •  22-09-2019
  •  | 
  •  

Pergunta

Eu costumava usar o método da velha escola de adicionar uma sobreposição à tela da câmera e funcionou bem. No entanto, desde que o 3.1 saiu, a Apple está insistindo que eu uso a API para adicionar uma sobreposição. Eu rapidamente consegui funcionar a sobreposição, mas parece que, se eu usar a sobreposição personalizada, a tela de mover e redimensionamento não é responsiva, só posso usar ou retomar, não posso redimensionar e mover. O código que estou usando está abaixo. Eu tentei várias variações, mas a única coisa que realmente permite o movimento e o redimensionamento é remover a linha que adiciona a exibição de sobreposição personalizada.

Alguma ideia?

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];
Foi útil?

Solução 2

Todo o problema desaparece quando você usar [overlayView setUserInteractionEnabled:NO]; Para impedir que a exibição de sobreposição de manusear a entrada.

Outras dicas

Defina os dois allowsEditing/showsCameraControls propriedades para não, prepare sua visão original para cameraOverlayView, E use takePicture método.

Então, imagePickerController:didFinishPickingMediaWithInfo: será chamado diretamente.


Por favor, tente o seguinte código:

- (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]; 
}

Espero que funcione bem.

http://www.techques.com/question/1-10178214/cameraoverlayview-prevents-editing-with-allowsediting

Isso funciona perfeitamente para mim. Tentei desativar o UserInteractEnabled, mas em vão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top