2011-03-25 5 views
4

CoreGraphics를 사용하여 투명한 사각형을 그린 사각형이 있습니다. 카메라가 시작되면 사용자 정의 오버레이보기가 셔터 애니메이션 위에 있습니다. 위의 커스텀 사각형이있는 표준 카메라 셔터가 보입니다. 어떻게하면 셔터 애니메이션 아래의 올바른 위치에 갈 수 있습니까? 나는 다른 샘플 코드를 살펴 봤지만 OS 3.1을위한 것이고 다르게 수행하지는 않는다. 여기 cameraOverlayView above Shutter animation

내 코드입니다 :

-(IBAction)cameraButton{ 
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerCameraDeviceRear]){ 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

    //Add the OverlayView with the custom Rectangle 
    CGRect overlayFrame = CGRectMake(0.0f, 0.0f, 320.0f, 480.0f); 
    OverlayView *overlayView = [[OverlayView alloc]initWithFrame:overlayFrame]; 
    picker.cameraOverlayView = overlayView; 
    [overlayView release]; 

    [self presentModalViewController:picker animated:YES]; 
    [picker release]; 
} 
} 

답변

1
당신은 당신이 이미하고있는 일 이외의 다른 작업을 수행 할 수 없습니다

; iOS가 오버레이보기를 셔터 위에두기로 결정하면 앱 스토어에서 거부 당할 위험이있는 경우가 아니라면 iOS에서 셔터 오버레이보기를 선택하기 만하면됩니다.

불완전한 해결 방법으로 알파 = 0으로 오버레이를 시작한 다음 알파를 1 초 또는 2 초로 설정할 수 있습니다. 그러나 셔터가 '열기'전에 표시되는 설정 시간은 없습니다 (카메라 하드웨어를 초기화하는 데 걸리는 시간에 달려 있다고 생각합니다). 그래서 때로는 인터페이스가 늦게 나타나지 않고 때로는 너무 일찍 나타날 수도 있습니다.

+0

흠. 나는 주변에서 일하는 것에 대한 당신의 생각을 좋아하지만, 당신이 지적한 것처럼 그것은 효과가 없을 것입니다. – Aaronium112

0

4.3.3부터는 요소가 맨 위에 표시되고 애니메이션이 시작될 때 아래에 스냅되므로 셔터 애니메이션이 손상됩니다. 이걸 레이더로 제출했습니다 : http://openradar.appspot.com/radar?id=1204401

2

iPad에서는이 문제가 존재하지 않으며 오버레이보기는 기본적으로 셔터 애니메이션 뒤에 있습니다. 하지만 iPhone에서는 오버레이가 앞에 나타납니다.

나는 저를 위해 일한 해결책을 발견했습니다.

은이 방법의 서브 뷰로 오버레이보기를 설정해야합니다 : http://www.alexcurylo.com/blog/2009/06/18/uiimagepickercontroller-in-3-0/

+0

위대한 작품입니다. – gtgaxiola

0

내가 비슷한 질문 here 대답 :

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    if (!viewController) 
     return; 

    UIView* controllerViewHolder = viewController.view; 
    UIView* controllerCameraView = [[controllerViewHolder subviews] objectAtIndex:0]; 
    UIView* controllerPreview = [[controllerCameraView subviews] objectAtIndex:0]; 
    [controllerCameraView insertSubview:self.overlayView aboveSubview:controllerPreview]; 
} 

원본 소스 도움이되기를 바랍니다. 나에게 도움이 된 것은 (iOS 6에서) navigationController : willShowViewController : animated에서 cameraOverlayView를 설정하는 것이었다.

- (void) navigationController:(UINavigationController*) navigationController willShowViewController:(UIViewController*) viewController animated:(BOOL) animated { 
    self.imagePickerController.cameraOverlayView = ...; // your camera overlay view 
}