Immagine Move & Resize non funziona quando si utilizza una sovrapposizione fotocamera personalizzato iPhone SDK 3.1+

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

  •  22-09-2019
  •  | 
  •  

Domanda

Ho usato per usare il metodo della vecchia scuola di aggiungere una sovrapposizione alla schermata della fotocamera, e che ha funzionato bene. Tuttavia, dal momento che 3.1 è uscito, Apple sta insistendo sul fatto che io uso l'API per aggiungere una sovrapposizione. Ho avuto subito la sovrapposizione al lavoro, ma sembra che se uso il modulo elettronico personalizzato, quindi la mossa e ridimensionamento dello schermo non è sensibile, posso usare o riprendere solo, non posso in realtà ridimensionare e spostare. Il codice che sto usando è al di sotto. Ho provato diverse varianti, ma l'unica cosa che in realtà permette il movimento e ridimensionamento è quello di rimuovere la riga che aggiunge la vista modulo elettronico personalizzato.

Tutte le idee?

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];
È stato utile?

Soluzione 2

L'intera questione va via una volta che si utilizza [overlayView setUserInteractionEnabled:NO]; per fermare la vista di sovrapposizione dalla manipolazione di ingresso.

Altri suggerimenti

Imposta entrambe le proprietà allowsEditing / showsCameraControls a NO, preparare la vostra vista originale per cameraOverlayView, e utilizzare il metodo takePicture.

Poi, imagePickerController:didFinishPickingMediaWithInfo: sarà chiamato direttamente.


Si prega di provare il seguente codice:

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

spero che funzionerà bene.

http://www.techques.com/ domanda / 1-10178214 / cameraOverlayView-evita-editing-con-allowsEditing

Questo funziona perfettamente per me. Ho provato a disabilitare userInteractionEnabled ma invano.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top