Image Move & Redimensionner ne fonctionne pas lorsque vous utilisez une superposition de caméra personnalisé SDK iPhone 3.1+

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

  •  22-09-2019
  •  | 
  •  

Question

Je l'habitude d'utiliser la méthode ancienne école d'ajouter une superposition à l'écran de la caméra, et qui a bien fonctionné. Cependant, depuis 3.1 est sorti, Apple est insistant sur le fait que j'utilise l'API pour ajouter une superposition. Je me suis vite la superposition au travail, mais il semble que si j'utilise la superposition personnalisée, le mouvement et redimensionne l'écran ne répond pas, je ne peux utiliser ou reprendre, ne peux pas réellement redimensionner et déplacer. Le code que je utilise est ci-dessous. J'ai essayé plusieurs variantes, mais la seule chose qui permet en fait le déplacement et le redimensionnement est de supprimer la ligne qui ajoute l'affichage de superposition personnalisée.

Toutes les idées?

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];
Était-ce utile?

La solution 2

Le numéro entier disparaît une fois que vous utilisez [overlayView setUserInteractionEnabled:NO]; pour arrêter l'affichage de superposition de manipulation de l'entrée.

Autres conseils

Définissez les propriétés allowsEditing / showsCameraControls à NO, préparez votre point de vue original cameraOverlayView, et utiliser la méthode de takePicture.

Alors, imagePickerController:didFinishPickingMediaWithInfo: sera appelé directement.


S'il vous plaît essayez le code suivant:

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

J'espère que ça va bien fonctionner.

http://www.techques.com/ question / 1-10178214 / cameraOverlayView-édition-empêche avec-allowsEditing

Cela fonctionne parfaitement pour moi. J'ai essayé de désactiver userInteractionEnabled mais en vain.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top