NSLayoutConstraint部分无效

时间:2017-02-04 06:35:28

标签: ios swift nslayoutconstraint ios9.3

以下是与iOS应用程序中的约束相关的一些令人费解的问题。

代码是:

        view.addConstraints([NSLayoutConstraint(item: infoLabel,
                                                attribute: .centerX,
                                                relatedBy: .equal,
                                                toItem: view,
                                                attribute: .centerX,
                                                multiplier: 1.0,
                                                constant: 0.0),
                             NSLayoutConstraint(item: infoLabel,
                                                attribute: .top,
                                                relatedBy: .equal,
                                                toItem: iconView,
                                                attribute: .bottom,
                                                multiplier: 1.0,
                                                constant: 50.0)])

上述代码在纵向模式下执行。 用于横向模式的约束与当前问题无关,我不包括它们。 在配备iOS 10.2.1的iPhone 6上,它可以完美运行。问题出在iPhone 4(3.5英寸)和iPod Touch(4英寸)上,两者都是iOS 9.3.5;第一个约束(使用.centerX)不起作用。

更确切地说,当从横向模式旋转设备时会出现问题,不再按预期执行居中。换句话说,它在开始时以纵向模式显示时工作正常。我想知道我的代码是否会遗漏,或者这是由于iOS版本的不同还是设备的差异。

附加信息: 横向模式中使用的约束:

        view.addConstraints([NSLayoutConstraint(item: infoLabel,
                                                attribute: .right,
                                                relatedBy: .equal,
                                                toItem: view,
                                                attribute: .right,
                                                multiplier: 1.0,
                                                constant: -30.0),
                             NSLayoutConstraint(item: infoLabel,
                                                attribute: .centerY,
                                                relatedBy: .equal,
                                                toItem: view,
                                                attribute: .centerY,
                                                multiplier: 1.0,
                                                constant: 20.0)])

在设置这些约束之前,执行以下代码行:

view.removeConstraints(view.constraints)

0 个答案:

没有答案