SKScene didChangeSize:多次调用



为什么每次改变方向时都会调用两次?这是一个错误还是?

当我什么都没有覆盖setSize时,它甚至被调用。

这不是

一个错误。这是一种正确的行为。

- (void)didChangeSize:(CGSize)oldSize

每当场景大小更改时调用。当您旋转设备时,这显然会发生。也可能是您在旋转发生后调用一些代码,从而触发大小更改,这就是为什么您看到didChangeSize被调用两次的原因。

我的解决方案是覆盖二传手。在Objective-C中,你只需覆盖-setSize:,不要忘记调用super。在 Swift 中,你覆盖 size 变量并实现didSet

override var size: CGSize {
    didSet {
        print("didSetSize:", size)
    }
}

在我的情况下(Swift UI SpriteView),每次更改调用两次didChangeSize,而didSet - 只有一次。我有控制台日志,例如:

didChangeSize old: (810.0, 1080.0) new: (1080.0, 810.0)
didSetSize: (1080.0, 810.0)
didChangeSize old: (810.0, 1080.0) new: (1080.0, 810.0)

最新更新