2012-07-26 4 views
0

3 개의 화면이있는 응용 프로그램으로 작업하고 있습니다.탐색 후 카메라 오버레이가 닫힌 채로 있습니다.

처음에는 대기 화면입니다. 버튼이있는 홈 화면에서 사용자는 두 번째 화면으로 이동하여 사진을 찍는 버튼이있는 카메라 오버레이를 갖습니다.

사용자가 사진을 찍으면 마지막 화면으로 이동하는 버튼을 누를 수 있습니다. 그러나 마지막 화면에서 집으로 이동 한 다음 오버레이 두 번째 화면으로 이동하면 카메라가 닫힙니다. 버튼을 누르면 사진을 찍을 수 있지만 카메라를 통해 볼 수는 없습니다.

if (self.imageView.isAnimating) 
    self.imageView.stopAnimating; 

if ([UIImagePickerController isSourceTypeAvailable:sourceType]) 
{ 
    [self.overlayViewController setupImagePicker:sourceType]; 
    [self presentModalViewController:self.overlayViewController.imagePickerController animated:YES]; 
} 
overlayviewcontroller 두 번째 화면입니다

overlayviewcontroller에서 다음 코드 :

- (void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType 
{ 
    self.imagePickerController.sourceType = sourceType; 

    if (sourceType == UIImagePickerControllerSourceTypeCamera) 
    { 
     self.imagePickerController.showsCameraControls = NO; 

     if ([[self.imagePickerController.cameraOverlayView subviews] count] == 0) 
     { 
      CGRect overlayViewFrame = self.imagePickerController.cameraOverlayView.frame; 
      CGRect newFrame = CGRectMake(0.0, 
             CGRectGetHeight(overlayViewFrame) - self.view.frame.size.height - 10.0, 
             CGRectGetWidth(overlayViewFrame), 
             self.view.frame.size.height + 10.0); 
      self.view.frame = newFrame; 
      [self.imagePickerController.cameraOverlayView addSubview:self.view]; 
     } 
    } 
} 

내가 어떤 감사하겠습니다

나는 오버레이를 시작하기 위해 홈 화면에 다음과 같은 코드를 사용 도움.

답변

0

같은 문제가 내게 직면하고 있으며 그에 대한 해결책이 하나 있습니다.

내 용액

[self performSelector:@selector(setCameraOverlayView) withObject:Nil afterDelay:2]; 

아래 대신 직접 방법

상기 overlayViewController 년대에 아래 줄

[self.imagePickerController.cameraOverlayView addSubview:self.view]; 

바꾸어 같다 셀렉터 방법 setCameraOverlayView의 해당 라인을 넣어.

-(void)setCameraOverlayView 
{ 
    [imagePickerController.cameraOverlayView addSubview:self.view]; 
} 

이하이 코딩 :

편집

해피 문제를 해결할 것처럼

나는 아래의 코드를 사용하여 오버레이 및 초기화를 초기화하기 위해서 오버레이의 기능도 수정 됨

오버레이

self.overlayViewController = [[OverlayViewController alloc] initWithNibName:@"OverlayViewController" bundle:nil images:self.finalData]; 

오버레이의 init 함수를 초기화하기 위해서

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil images:(NSArray *)imgArray 
{ 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) 
    { 
     subCategories = imgArray; 
     imagePickerController = [[UIImagePickerController alloc] init]; 
     imagePickerController.delegate = self; 
     imagePickerController.navigationBarHidden = YES; 
    } 
    return self; 
} 
배열이 필요하거나 필요 내가 오버레이 더 몇 가지 작업을 수행하는 데 필요한 몇 가지 추가 정보를 원하시면되어 있지 않으며

당신은 그것을 생략 할 수 있습니다.

해피 코딩 :)

+0

안녕하십니까, 정말로 진심으로 감사드립니다. 그러나 문제는이 코드가 문제를 해결하지 못했다는 것입니다. 오버레이에는 카메라가 있고 하단에 사진 촬영 버튼이 있습니다.결과적으로 사진 촬영 버튼이 2 초 지연되어 표시되지만 탐색 후 카메라는 여전히 닫혀 있습니다. 사용자는 사진을 찍을 수는 있지만 카메라가 어떤 사진을 찍고 있는지는 볼 수 없습니다. 문제의 해결책을 제시 할 수 있을지 궁금합니다. 미리 감사드립니다. – user1480179

+0

ok 해결책을 줄 수 있기 전에 해결했습니다. 하지만 약간의 시간이 필요합니다 –

+0

이미지를 찍은 후 imagePickerController를 dealloc해야하고 이미지를 가져 오기 위해 imagePicker 페이지를 탐색 할 때 다시 할당해야한다고 생각합니다. 이것은 메모리 관련 문제로 보입니다. 일부 리소스를 비워야 할 필요가 있고 그 시간에 사진을 찍을 필요가있을 때 imagePickerController를 줄 바로 앞에 할당해야하며 사진을 찍은 후이를 해제해야합니다. –

관련 문제