场景加载大约需要7-9秒。所以我需要一个活动指标。
我像这样创建微调器:
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
spinner.layer.cornerRadius = 5;
spinner.opaque = NO;
spinner.backgroundColor = [UIColor clearColor];
spinner.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[spinner setColor:[UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0]];
添加如下子视图:
[sceneView addSubView:spinner];
尝试在viewDidLoad中调用:
[spinner startAnimating];
//load the scene
[spinner stopAnimating];
但它永远旋转,场景永远不会加载。
这样做的正确方法是什么?
我根据@mnuages回复尝试了这个:
- (void)renderer:(id<SCNSceneRenderer>)aRenderer willRenderScene:(SCNScene *)scene atTime:(NSTimeInterval)time {
if ([self spinner] == nil) {
_spinner = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 250, 250)];
_spinner.layer.cornerRadius = 5;
_spinner.opaque = YES;
_spinner.backgroundColor = [UIColor purpleColor];
_spinner.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[_spinner setColor:[UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0]];
_spinner.center = self.view.center;
[self.view addSubview:_spinner];
[self.view bringSubviewToFront:_spinner];
[[self spinner] startAnimating];
}
NSLog(@"BEGIN SCENE RENDER %@",scene);
}
- (void)renderer:(id<SCNSceneRenderer>)aRenderer didRenderScene:(SCNScene *)scene atTime:(NSTimeInterval)time {
[[self spinner] stopAnimating];
[_spinner removeFromSuperview];
_spinner = nil;
NSLog(@"END SCENE RENDER %@", scene);
}
但这会被反复调用。而且旋转器没有显示出来。我仍然看到一个空白的白色屏幕(在IB中设置了SCNView的初始白色背景颜色,稍后在viewDidLoad中将其更改为灰色)。
答案 0 :(得分:1)
您可以查看SCNSceneRenderer.delegate
和-renderer:didRenderScene:atTime: