更改SKView上的约束时出错

时间:2016-06-13 04:47:57

标签: ios swift sprite-kit uikit ios-autolayout

我制作了一个游戏,我在UIView中有一个SKView,而SKView内部是一个SKScene。在viewDidLoad()方法中,我想更改SKView上的约束,特别是宽高比。我已经应用了1:1的宽高比,我创建了一种方法来将宽高比更改为所需的宽高比。在我的viewDidLoad()方法中,我调用以下内容:

ratioConstraint = changeMultiplier(ratioConstraint, multiplier: 2)

其中ratioConstraint是负责宽高比的约束,changeMultiplier如下:

func changeMultiplier(constraint: NSLayoutConstraint, multiplier: CGFloat) -> NSLayoutConstraint {

    let newConstraint = NSLayoutConstraint(
        item: constraint.firstItem,
        attribute: constraint.firstAttribute,
        relatedBy: constraint.relation,
        toItem: constraint.secondItem,
        attribute: constraint.secondAttribute,
        multiplier: multiplier,
        constant: constraint.constant)

    newConstraint.priority = constraint.priority

    NSLayoutConstraint.deactivateConstraints([constraint])
    NSLayoutConstraint.activateConstraints([newConstraint])

    return newConstraint

}

当我运行时,我收到错误:

<CAEAGLLayer: 0x7fc4e0f12450>: calling -display has no effect.

我不明白我做错了什么。我创建了另一个模拟此行为的测试项目,它按预期工作。任何帮助都会很棒。如果它有帮助,我可以发布测试项目以显示我想要的行为。谢谢你的帮助。

编辑:经过进一步测试后,我发现只有在changeMultiplier中调用viewDidLoad时才会出现此错误,这就是为什么它在我的测试项目中工作,因为我在调用它按下按钮。在呈现视图之前,我什么时候应该调用它来更新宽高比?

编辑:将其移至viewDidLayoutSubviews解决问题。但是,现在如果我旋转设备,SKView就会消失,这在以前没有发生过。

0 个答案:

没有答案