【问题标题】:buttons appear on screen before SCNView按钮出现在 SCNView 之前的屏幕上
【发布时间】:2016-03-04 08:06:15
【问题描述】:

在情节提要中,我将按钮附加到主视图作为 SCNView 的兄弟(按钮和 SCNView 都是主视图的子视图)。在启动时,按钮会先于 SCNView 出现在屏幕上。这是相当不幸的。你知道如何解决这个问题吗?

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

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 秒并正确呈现视图吗?真是愚蠢的问题

【问题讨论】:

  • 你能发布一些代码或参考吗?

标签: ios scenekit


【解决方案1】:

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

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

这样做的一个好方法可能是在 SceneKit 准备好显示之前显示某种启动图像。您可以在情节提要中添加UIImageView,设置为使用初始屏幕(可能与您的应用接管之前 iOS 显示的相同启动图像)来隐藏所有内容,然后在 SceneKit 时隐藏该图像视图(甚至淡出?)开始渲染。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多