0

在我的 iPhone 应用程序中,我使用 Unifeye mobileviewcontroller 类,包括 EAGLView 和 metaio sdk。当我加载这个视图控制器时,相机视图将被激活,一些 metaio 类函数也会被调用。实际上,加载视图控制器需要花费大量时间。而且,如果我尝试从 Unifeye 视图控制器导航到另一个视图并有时返回,应用程序就会崩溃。所以,我只是想知道,有没有办法在后台或应用程序打开时加载视图控制器。我不知道。如果有任何方法可以加快加载速度,请分享您的想法。

4

2 回答 2

0

根据您在视图控制器的 init 方法中所做的工作量,您至少可以在视图控制器初始化时显示一个活动指示器。要异步执行此操作,您可以使用如下代码:

- (IBAction)onStartPushed:(id)sender
{
    [activityIndicator startAnimating];
    // initialize the viewcontroller with a little delay, so that the UI displays the changes made above
    double delayInSeconds = 0.1;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

        ARViewController* theViewController = [[ARViewController alloc] init];

        // present the viewcontroller
        [self presentModalViewController:theViewController animated:YES];

        [activityIndicator stopAnimating];
    });
}

如果您想要加载大型 3D 模型或跟踪会阻塞主线程的配置,您可以在您的视图控制器中执行相同的操作。

于 2012-08-23T07:10:05.000 回答
0

我敢打赌,一旦控制器加载,相机就会出现?您的控制器已正常加载,但启动相机需要时间。这是你得到延迟的地方。并且不能固定 imagePickerController 的负载。相反,您可以在 viewDidAppear 中显示相机,因此用户将首先看到您的控制器,然后是延迟,然后是相机。

于 2012-07-16T11:06:51.763 回答