为什么每次改变方向时都会调用两次?这是一个错误还是?
当我什么都没有覆盖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)