Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIProgressView未显示_Iphone_Ios_Objective C_Xcode_Opengl Es - Fatal编程技术网

Iphone UIProgressView未显示

Iphone UIProgressView未显示,iphone,ios,objective-c,xcode,opengl-es,Iphone,Ios,Objective C,Xcode,Opengl Es,我有一个UIProgressView,我想在我的GLKViewController上运行,而其余的代码由iOS加载。我已将UIProgressView放入我的“viewDidLoad”方法中。在viewDidLoad方法加载所有代码之前,UIProgressView不会显示。如何使UIProgressView在调用viewDidLoad方法后立即显示,并在viewDidLoad方法完成时结束 - (void)viewDidLoad { [super viewDidLoad];

我有一个UIProgressView,我想在我的GLKViewController上运行,而其余的代码由iOS加载。我已将UIProgressView放入我的“viewDidLoad”方法中。在viewDidLoad方法加载所有代码之前,UIProgressView不会显示。如何使UIProgressView在调用viewDidLoad方法后立即显示,并在viewDidLoad方法完成时结束

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Progress Bar
    [threadProgressView setProgress: 0.0];    
    [self performSelectorOnMainThread:@selector(updateProgressBar) withObject:nil waitUntilDone:NO];

    // Disbale iPhone from locking
    [[UIApplication sharedApplication] setIdleTimerDisabled: YES];

    // Set up context to use Open GL ES
    self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

    if (!self.context) {
        NSLog(@"Failed to create ES context");
    }

    // Create a view to display the Open GL ES content
    GLKView *view = (GLKView *)self.view;
    view.context = self.context;
    view.drawableDepthFormat = GLKViewDrawableDepthFormat24;

    /******** Default Settings **********/
    m_kf            = 0;                                    // The current keyframe ID.
    m_avPos         = GLKVector3Make(0.0f, 0.0f, -35.0f);   // Where to put the avata.
    m_camPos        = GLKVector3Make(0.0f, 10.0f, -35.0f);  // The camera orbits this point.
    m_camDist       = 30.0f;                                // Distance of camera from the orbit point.

    /******** Set up open gl ***********/
    [self setupGL];

    /********* TOUCH IMPLEMENTATION *********/

    // Pinch recongizer detects pinches and is used to zoom in/out
    UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchDetected:)];
    [self.view addGestureRecognizer:pinchRecognizer];

    // Pan recognizer, used to rotate around the x and y axis
    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panDetected:)];
    [self.view addGestureRecognizer:panRecognizer];

    /********* END TOUCH IMPLEMENTATION *********/

}
如何使UIProgressView在调用viewDidLoad方法后立即显示,并在viewDidLoad方法完成时结束

调用
viewDidLoad
时,视图尚未显示在屏幕上。在
viewDidLoad
之后,您将看到
viewwillbeen
然后调用
viewdidbeen

此外,如果您有一个长时间运行的
viewdiload
,它将阻止您的主线程,因此您的进度条不会得到更新。
当您这样做时:

 [self performSelectorOnMainThread:@selector(updateProgressBar) withObject:nil waitUntilDone:NO];    
由于您在主线程上,指定
waitUntilDone
将对您的请求进行排队,并且它将在稍后处理,可能是在您的
viewDidLoad
完成之后

要做您想做的事情,您将需要更多的异步代码

如何使UIProgressView在调用viewDidLoad方法后立即显示,并在viewDidLoad方法完成时结束

调用
viewDidLoad
时,视图尚未显示在屏幕上。在
viewDidLoad
之后,您将看到
viewwillbeen
然后调用
viewdidbeen

此外,如果您有一个长时间运行的
viewdiload
,它将阻止您的主线程,因此您的进度条不会得到更新。
当您这样做时:

 [self performSelectorOnMainThread:@selector(updateProgressBar) withObject:nil waitUntilDone:NO];    
由于您在主线程上,指定
waitUntilDone
将对您的请求进行排队,并且它将在稍后处理,可能是在您的
viewDidLoad
完成之后


要执行您想要执行的操作,您将需要更多的异步代码。

viewDidLoad在主循环、主线程上执行。这就是用户界面线程。界面上的任何更改在结束后都不会显示。所以,这是正常的行为

选择器updateProgressBar将在viewDidLoad在同一线程(主线程)上结束后执行


仅将viewDidLoad用于初始化,然后在后台线程上执行进程,并在主线程(即接口线程)上执行progressView更改。

viewDidLoad在主循环、主线程上执行。这就是用户界面线程。界面上的任何更改在结束后都不会显示。所以,这是正常的行为

选择器updateProgressBar将在viewDidLoad在同一线程(主线程)上结束后执行

仅在初始化时使用viewDidLoad,然后在后台线程上执行process,并在主线程(即接口线程)上执行progressView更改。

在主线程(默认)上添加:

这将给主循环一次快照,然后返回到您的代码。

在主线程(默认)上添加:


这将给主循环一个快照,然后返回到代码。

它是放在其他所有元素之上(使用bringtofront),还是通过故事板?它是放在所有其他元素之上的?在您添加ProgressView的地方,即在xib中?它是放在其他所有元素之上(使用bringtofront),或者通过故事板?它被放置在所有其他元素上,您在其中添加了ProgressView,即在xib中?