Iphone Can';启动红色激光覆盖视图控制器时的t尺寸控制器

Iphone Can';启动红色激光覆盖视图控制器时的t尺寸控制器,iphone,ios,ipad,Iphone,Ios,Ipad,我正在使用RedLaser SDK。我的应用程序是一个分割视图。当按下主视图控制器上的按钮时,我试图启动红色激光覆盖 该方法在按下按钮时被调用,这就是问题开始的地方。我有3个不同版本的代码启动覆盖。每个人都有自己的问题 选择1 这是我的基线,我知道它不会工作,因为我没有初始化覆盖。下面的代码正确启动视图控制器,但(显然)没有执行我想要的操作 // Working Code that brings up dialog but doesn't start camera overlay SR

我正在使用RedLaser SDK。我的应用程序是一个分割视图。当按下主视图控制器上的按钮时,我试图启动红色激光覆盖

该方法在按下按钮时被调用,这就是问题开始的地方。我有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];
     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];
}
它因以下错误(nslog)而崩溃:

***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“应用程序试图以模态方式呈现活动控制器。”
***第一次抛出调用堆栈:
(0x37ecb88f 0x331fc259 0x30d86441 0x7f6b5 0x7edf7 0x37e253fd 0x30cbfe07 0x30d855e7 0x37e253fd 0x30cbfe07 0x30cbfdc3 0x30cbfda1 0x30cbfb11 0x30cc0449 0x30cbe92b 0x30cbe319 0x30ca4695 0x30ca3f3b 0x363052B 0x37E9F5223 0x37E9C5 0x37e214a5 0xE337E2136D 0x30CD36304439 0xCD2CD5 0x7deb5)
终止引发异常的调用

任何帮助都将不胜感激。谢谢

我得到了代码,但仍然有一些问题。代码如下:

     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];
     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的大小设置为与我的原始控制器(在nib中定义)相同的大小。不过我还有几个问题

控制器底部的按钮栏中有4个按钮。它也有一个UIImage。第一次加载此控制器时,按钮(以及按钮栏和UIImage)要么丢失,要么位于陌生的位置。如果我通过触摸控制器外部的某个屏幕来关闭popover控制器,并再次加载控制器,则所有控件都位于正确的位置。事实上,除了第一次,他们每次都在正确的地方


有什么想法吗?

我想出来了:我进入NIB并取消选择“自动调整子视图大小”,现在它每次都能正确显示。