Image Move & Resize does not work when using custom overlay iPhone iPhone SDK 3.1+

I used to use the old school method of adding overlays to the camera screen, and this worked fine. However, since 3.1 came out, Apple insists that I use the API to add overlay. I quickly got an overlay to work with, but it seems that if I use a custom overlay, then the transition and resizing screen does not respond, I can use or return, cannot actually resize and move around. The code I'm using is below. I tried several options, but the only thing that actually allows you to move and resize is to delete the line that adds a custom overlay view.

Any ideas?

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];
+3
3

, [overlayView setUserInteractionEnabled:NO];, .

+3

allowsEditing/showsCameraControls , cameraOverlayView takePicture.

imagePickerController:didFinishPickingMediaWithInfo: .


, :

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

, .

+3

Source: https://habr.com/ru/post/1727078/


All Articles