以下是与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)