【问题标题】:How to properly animate SCNView height?如何正确设置 SCNView 高度的动画?
【发布时间】:2019-07-09 13:53:04
【问题描述】:

我正在尝试为 SCNView 高度设置动画,但似乎存在一些视觉问题。

当内容增长时,看起来一切正常,但是当我试图降低高度时,视图会立即跳转到最终高度。

let newHeight = scene.frame.height + (open ? 100.0 : -100.0)
UIView.animate(withDuration: 1.0, animations: {
    self.scene.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: newHeight)
}) { finished in
    self.open = !self.open
}

Code Running in Sumulator

常规视图一切正常。

【问题讨论】:

  • 您似乎没有计算安全区域的框架。
  • @MahendraGP here 你可以在没有安全区域的 iPhone 8 上找到动画。动画引擎立即将视图高度更改为锚点位置,然后开始“破碎”动画
  • 现在看起来框架是在动画之前设置的。
  • @MahendraGP 你可以自己测试一下。只需创建空项目,添加 SCNView 并尝试对其高度进行前后动画处理。此代码适用于常规视图

标签: ios swift animation uikit scenekit


【解决方案1】:

在需要时将SCNViewcontentMode 设置为.scaleToFill(例如在viewDidLoad 中)。它按预期工作。

let view: SCNView 
...
view.contentMode = .scaleToFill

【讨论】:

  • 似乎如果在情节提要中为 SCNView 设置 contentMode,它并不会真正影响场景。非常感谢!
【解决方案2】:

这种行为与scene的内容模式有关系。你可以试试:

             scene.contentMode = .scaleToFill

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多