Bild Move & Resize funktioniert nicht, wenn eine benutzerdefinierte Kamera Overlay iPhone SDK 3.1+

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

  •  22-09-2019
  •  | 
  •  

Frage

Ich benutzen die Old-School-Methode zu verwenden, der eine Überlagerung mit dem Kamerabildschirm hinzugefügt, und das hat gut funktioniert. Da jedoch 3.1 herauskam, Apple darauf besteht, dass ich die API verwenden, um einen Overlay hinzufügen. Ich habe schnell das Overlay zu arbeiten, aber es scheint, dass, wenn ich die benutzerdefinierte Overlay verwendet wird, dann ist die Bewegung & Resize-Bildschirm nicht ansprechbar ist, kann ich nur verwenden oder Neuaufnahme, kann nicht wirklich die Größe und Bewegung. Der Code, den ich verwende, ist unten. Ich habe mehrere Varianten ausprobiert, aber das einzige, was ermöglicht tatsächlich die Bewegung & Resize ist die Linie zu entfernen, die die benutzerdefinierten Overlay-Ansicht erstellt.

Irgendwelche Ideen?

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];
War es hilfreich?

Lösung 2

Die gesamte Ausgabe geht weg, sobald Sie [overlayView setUserInteractionEnabled:NO]; benutzen Umgang mit dem Eingang der Überlagerungsansicht zu beenden.

Andere Tipps

Set sowohl allowsEditing / showsCameraControls Eigenschaften auf NO, bereiten Sie Ihre ursprüngliche Ansicht cameraOverlayView und Verwendung takePicture Verfahren.

Dann wird imagePickerController:didFinishPickingMediaWithInfo: direkt aufgerufen werden.


Bitte versuchen Sie den folgenden Code:

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

Ich hoffe, es wird gut funktionieren.

http://www.techques.com/ Frage / 1-10178214 / cameraOverlayView-verhindert-Bearbeitung-mit-allowsEditing

Das funktioniert perfekt für mich. Ich habe versucht zu deaktivieren userInteractionEnabled aber vergeblich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top