2010-01-02 6 views
3

예전에 카메라 화면에 오버레이를 추가하는 방법을 사용했는데 정상적으로 작동했습니다. 그러나 3.1이 나오자 애플은 API를 사용하여 오버레이를 추가한다고 주장했다. 오버레이가 빨리 작동하지만 사용자 정의 오버레이를 사용하면 & 크기 조정 화면이 반응이 없으며 실제 크기를 조정할 수 없으며 다시 사용할 수 있습니다. & 이동. 내가 사용하고있는 코드는 다음과 같습니다. 몇 가지 변형을 시도했지만 실제로는 &의 이동을 활성화하는 유일한 방법은 사용자 정의 오버레이보기를 추가하는 선을 제거하는 것입니다.이미지 사용자 정의 카메라 오버레이 iPhone SDK 3.1 이상을 사용하는 경우 이미지 이동 및 크기 조정이 작동하지 않습니다.

아이디어가 있으십니까? NO에게 모두 allowsEditing/showsCameraControls 속성을 설정

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

[overlayView setUserInteractionEnabled:NO];을 사용하면 입력을 처리하는 오버레이보기를 중지하면 전체 문제가 사라집니다.

+0

왜 오버레이가 필요한가요? 위에서 제안한 것을 시도해 본 결과 오버레이가 표시되지 않습니다. – tom

+0

라이브 카메라보기 위에 프레임을 표시하는 데 오버레이 만 있으면됩니다. 내 오버레이에서 사용자 상호 작용이 필요하지 않습니다. –

3

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

나는 그것이 잘 작동 희망 :


다음 코드를 보시기 바랍니다.

+0

그래도 크기를 조정하고 이동할 수 있습니까? –

+0

죄송합니다. 질문에 대한 오해를했습니다. 귀하의 질문은 "사용자 정의 오버레이를 추가 할 때 크기 조정 및 자르기 작업을 활성화하는 방법"입니다. 그렇지 않습니까? 나는 내 대답을 바꾸었다. – KatokichiSoft

+1

이 작업은 미묘한 변화로 인해 letsEditing 및 showsCameraControls를 YES로 설정해야했습니다. 감사. 이제 애플이 승인 할 수 있는지 보자. CALayer addSublayer가 유효하지 않다는 경고가 나타납니다. –

관련 문제