2012-09-07 6 views
0

RedLaser SDK를 사용 중입니다. 내 애플 리케이션은 분할보기입니다. 마스터보기 컨트롤러에서 바 버튼을 누르면 RedLaser 오버레이를 시작하려고합니다.RedLaser 오버레이보기 컨트롤러를 시작할 때 컨트롤러 크기를 조정할 수 없습니다.

버튼을 누르면 메소드가 호출되어 문제가 시작됩니다. 오버레이를 실행하는 3 가지 다른 버전의 코드가 있습니다. 각각은 자신의 문제가 있습니다.

옵션 1 이것은 내 기준이었으며 오버레이를 초기화하지 않았기 때문에 작동하지 않는다는 것을 알고있었습니다. 다음 코드는 뷰 컨트롤러를 올바르게 시작하지만 (분명히) 내가 원하는 것을 수행하지 않습니다.

 // Working Code that brings up dialog but doesn't start camera overlay 
SRSScanVINViewController *scanVINViewController y= [[SRSScanVINViewController alloc] init]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:scanVINViewController]; 
[navController setModalPresentationStyle:UIModalPresentationFormSheet]; 
[navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[self presentViewController:navController animated:YES completion:nil]; 
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

옵션 2 이 코드는 오버레이 컨트롤러를 시작하고 충돌없이 실행합니다. 오버레이가 작동하고 카메라가 활성화되어 있습니다. 문제는 viewcontroller/overlay가 전체 화면을 찍고 있다는 것입니다. 내 컨트롤 (버튼 등)은 모두보기 컨트롤러가 화면의 왼쪽 상단 부분을 차지하는 것처럼 배치됩니다. 오버레이를 올바르게 크기 조정할 수 있다면이 방법이 효과적입니다.

 // Working code that shows the overlay (camera on) but the overlay takes the whole screen 
SRSScanVINViewController *scanVINViewController = [[SRSScanVINViewController alloc] init]; 
[pickerController setOverlay:scanVINViewController]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:scanVINViewController]; 
[navController setModalPresentationStyle:UIModalPresentationFormSheet]; 
[navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[self presentViewController:pickerController animated:YES completion:nil]; 
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

옵션 3 이 시도는 옵션 2 (위)의 문제를 해결하는 것이 었습니다.

 SRSScanVINViewController *scanVINViewController = [[SRSScanVINViewController alloc] init]; 
[pickerController setOverlay:scanVINViewController]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:pickerController]; 
[navController setModalPresentationStyle:UIModalPresentationFormSheet]; 
[navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[self presentViewController:pickerController animated:YES completion:nil]; 
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

그것은 다음과 같은 오류 (nslog)와 충돌 : 어떤 도움을 크게 감상 할 수

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:  'Application tried to present modally an active controller <SRSMasterViewController:  0x1f59f540>.' 
*** First throw call stack: 
(0x37ecb88f 0x331fc259 0x30d86441 0x7f6b5 0x7edf7 0x37e253fd 0x30cbfe07 0x30d855e7  0x37e253fd 0x30cbfe07 0x30cbfdc3 0x30cbfda1 0x30cbfb11 0x30cc0449 0x30cbe92b 0x30cbe319  0x30ca4695 0x30ca3f3b 0x3630522b 0x37e9f523 0x37e9f4c5 0x37e9e313 0x37e214a5 0x37e2136d  0x36304439 0x30cd2cd5 0x7deb5 0x7de50) 
terminate called throwing an exception 

여기에 코드입니다. 감사!

답변

0

코드가 작동하지만 여전히 몇 가지 문제가 있습니다. 코드는 다음과 같습니다.

 SRSScanVINViewController *scanVINViewController = [[SRSScanVINViewController alloc] init]; 
[pickerController setOverlay:scanVINViewController]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:scanVINViewController]; 
[navController setModalPresentationStyle:UIModalPresentationFormSheet]; 
[navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
{ 
    pickerControllerPopover = [[UIPopoverController alloc] initWithContentViewController:pickerController]; 
    [pickerControllerPopover setDelegate:self]; 
    [pickerControllerPopover setPopoverContentSize:CGSizeMake(320.0f, 460.0f)]; 
    [pickerControllerPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:NO]; 
} 
else 
{ 
    [self presentViewController:pickerController animated:YES completion:nil]; 
} 

이렇게하면 popover의 크기가 원래 컨트롤러 (펜촉에 정의 된)와 동일한 크기로 설정됩니다. 나는 아직도 몇 가지 문제가 있습니다.

컨트롤러의 하단에는 버튼 막대에 4 개의 버튼이 있습니다. 그것은 또한 UIImage 있습니다. 처음으로이 컨트롤러를로드 할 때 단추와 단추 막대 및 UIImage 중 하나가 누락 된 위치가 이상한 곳에 있습니다. 컨트롤러 외부의 화면을 터치하고 컨트롤러를 다시로드하여 팝업 제어기를 닫으면 컨트롤이 모두 올바른 위치에 있습니다. 실제로, 그들은 처음을 제외하고 매번 올바른 장소에 있습니다.

아이디어가 있으십니까?

+0

알아 냈습니다 : NIB에 들어가서 "Autoresize Subviews"의 선택을 취소했는데 이제는 매번 올바르게 표시됩니다. – JustLearningAgain

관련 문제