Перемещение и изменение размера изображения не работают при использовании пользовательского наложения камеры iPhone SDK 3.1+

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

  •  22-09-2019
  •  | 
  •  

Вопрос

Раньше я использовал старый метод добавления наложения на экран камеры, и это работало нормально.Однако с момента выхода версии 3.1 Apple настаивает на том, чтобы я использовал API для добавления наложения.Я быстро заставил наложение работать, но кажется, что если я использую собственное наложение, экран перемещения и изменения размера не реагирует, я могу только использовать или повторно использовать, но на самом деле не могу изменять размер и перемещать.Код, который я использую, приведен ниже.Я попробовал несколько вариантов, но единственное, что действительно позволяет перемещать и изменять размер, — это удалить строку, добавляющую пользовательский вид наложения.

Есть идеи?

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];
Это было полезно?

Решение 2

Вся проблема исчезнет, ​​как только вы начнете использовать [overlayView setUserInteractionEnabled:NO]; чтобы остановить представление наложения от обработки ввода.

Другие советы

Установить оба 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]; 
}

Я надеюсь, что это сработает хорошо.

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

Это отлично работает для меня.Я пытался отключить userInteractionEnabled, но тщетно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top