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方法会被触发几次。