Ios 如何创建在暂停状态下启动的GLKViewController?

Ios 如何创建在暂停状态下启动的GLKViewController?,ios,glkit,Ios,Glkit,我创建了一个GLKViewController,如下所示: // Create a GLK View Controller to handle animation timings _glkVC = [[GLKViewController alloc] initWithNibName:nil bundle:nil]; _glkVC.preferredFramesPerSecond = 60; _glkVC.view = self.glkView; _glkVC.delegate = self; _

我创建了一个
GLKViewController
,如下所示:

// Create a GLK View Controller to handle animation timings
_glkVC = [[GLKViewController alloc] initWithNibName:nil bundle:nil];
_glkVC.preferredFramesPerSecond = 60;
_glkVC.view = self.glkView;
_glkVC.delegate = self;
_glkVC.paused = YES;
NSLog(@"initial state: %@", _glkVC.paused ? @"paused" : @"running");
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];    
    // self.paused automatically set to NO in super's implementation
    self.paused = YES;
}
但是它立即开始调用委托更新方法,并且上面的
NSLog
的输出是:
初始状态:running


我正在使用
setNeedsDisplay
管理视图更新,但我希望
GLKViewController
不时处理动画,因此我只想在需要时取消暂停。有没有办法在暂停状态下启动控制器?

代替我使用的任何答案:

我首先设置了
。preferredFramesPerSecond=1
,然后在更新方法中检查
if(preferredFramesPerSecond==1)
并设置了
。paused=YES
(还为
preferredFramesPerSecond
设置了我真正想要的值)。然后,我可以允许update方法的其余部分在初始化后运行一次,或者如果我不想让它运行,就立即返回

然后,根据需要使用
setNeedsDisplay
手动触发重画,并在需要设置动画时取消暂停


如果有人有更好的解决方案,请照常回答。

您是否尝试过在viewDidAppear方法而不是viewDidLoad方法中暂停?它应该是这样的:

// Create a GLK View Controller to handle animation timings
_glkVC = [[GLKViewController alloc] initWithNibName:nil bundle:nil];
_glkVC.preferredFramesPerSecond = 60;
_glkVC.view = self.glkView;
_glkVC.delegate = self;
_glkVC.paused = YES;
NSLog(@"initial state: %@", _glkVC.paused ? @"paused" : @"running");
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];    
    // self.paused automatically set to NO in super's implementation
    self.paused = YES;
}

轰,完成!如果这是可行的,那么你每分钟保存数千次“如果”检查,只是为了在启动时暂停

您是否尝试过覆盖
resumeOnDidBecomeActive
以返回?这将使动画在任何激活时都暂停,包括第一次激活。

ViewDidAspect方法适用于我,但不是最佳方法。在暂停生效之前,会出现几帧可见动画。使用ViewWillAppeal工作得更好:

- (void) viewWillAppear: (BOOL) animated
{
  [ super viewDidAppear: animated ];
  self.paused = YES;
}

我想再次提出这个问题。FPS的解决方法还可以,但肯定有更好的方法吗?这不起作用。在点击
viewdideappear
之前,draw方法会被触发几次。