Imagen de Mover y cambiar tamaño no funciona cuando se utiliza una cámara personalizada superposición de iPhone SDK 3.1+

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

  •  22-09-2019
  •  | 
  •  

Pregunta

Yo solía usar el viejo método de la escuela de añadir una superposición en la pantalla de la cámara, y que ha funcionado muy bien.Sin embargo, desde 3.1 salió, Apple insiste en que puedo usar la API para añadir una superposición.Rápidamente fui a la superposición de trabajar, pero parece que si yo uso la costumbre de superposición, a continuación, mover y cambiar tamaño de la pantalla no responde, solo puedo utilizar, o retomar, en realidad no puede redimensionar y mover.El código que estoy usando es de abajo.He intentado varias variaciones, pero la única cosa que realmente permite mover y cambiar tamaño es para quitar la línea que añade la costumbre de superposición de vista.

Alguna idea?

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

Solución 2

Todo el problema desaparece una vez que usted utilice [overlayView setUserInteractionEnabled:NO]; para detener la superposición de vista de la manipulación de la entrada.

Otros consejos

Conjunto de ambos allowsEditing/showsCameraControls propiedades a NO, preparar su punto de vista original para cameraOverlayView, y uso takePicture método.

A continuación, imagePickerController:didFinishPickingMediaWithInfo: va a ser llamado directamente.


Por favor, pruebe con el siguiente 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 bien.

http://www.techques.com/question/1-10178214/cameraOverlayView-prevents-editing-with-allowsEditing

Esto funciona a la perfección para mí.He intentado desactivar userInteractionEnabled pero en vano.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top