SCNView之前屏幕上出现按钮

时间:2015-11-30 16:04:46

标签: ios scenekit

在storyboard中,我将主视图附加的按钮作为SCNView的兄弟姐妹(按钮和SCNView都是主视图的子视图)。在启动时,按钮出现在SCNView之前的屏幕上。这非常不幸。你知道如何解决这个问题吗?

//编辑:在viedDidLoad中以编程方式添加按钮:作为SCNView的子视图。仍然存在同样的问题。

enter image description here

SettingsButton和View出现在SceneView之前。这种情况发生在iPhone 5,5c及更低版本和iPad上。(3当然,其他人不知道)

以编程方式添加视图的代码:

let uv = UIView(frame:myFrame)
uv.backgroundColor = UIColor.blackColor
sceneView.addSubview(uv)// scene view from storyboard

多数民众赞成。 iOS如何以5-10秒的速度加载应用程序,而不是以不可预测的顺序向屏幕添加视图而奔波。难道它只需要多花0.2秒并正确显示视图?真的很愚蠢的问题

1 个答案:

答案 0 :(得分:2)

我想如果你通过调试器断点检查或登录viewDidLoad,你会发现SCNView实例确实立即在视图层次结构中。

您所看到的是所述视图的SceneKit 内容不会立即显示。根据您使用SceneKit所做的事情,可能需要一些时间来加载内容并准备渲染,在此期间,视图层次结构的其余部分仍然可见。这种延迟可能是不可避免的 - 您可以通过优化资产格式,减少场景中的内容等来最小化它。所以听起来这里的关键问题是让您的应用程序启动体验看起来像您想要的那样考虑到延迟。

这样做的好方法可能是在SceneKit准备好显示之前显示某种类型的启动图像。您可以在故事板中放置一个UIImageView,设置为使用启动画面遮盖所有内容(可能是在应用程序接管之前iOS显示的相同启动图像),然后隐藏该图像视图(甚至淡出了?)当SceneKit开始渲染时。

要了解SceneKit何时开始渲染,请将您的一个对象设置为场景渲染器委托并实现renderer:didRenderScene:atTime:。每个帧都调用该方法,因此您可以使用它来捕获第一帧的渲染时间(然后忽略后续帧)。

相关问题