Swift:AutoLayout 约束在设备旋转时无法正常运行?

Swift: AutoLayout constraints not behaving correctly when device rotates?

我正在尝试对“聊天气泡式”视图进行限制。

我的问题是当设备旋转时,视图没有扩展到设备宽度的 70%。

这是一张图片来演示发生了什么。

当我水平旋转设备时,请注意右侧设备上的蓝色气泡可能会扩大以占据 space 的 70%,相反,它会保持其当前的窄宽度:

现在,这是我想要发生的事情的图片。当我旋转设备时,你能看到右边的设备实际上将我的自定义视图扩展到屏幕的 70% 吗?

我做错了什么?如何实现第二张图片中的行为?

这是我使用 SnapKit DSL 布置自定义视图的代码:

bubble.snp.makeConstraints { (make) in
    make.width.lessThanOrEqualToSuperview().multipliedBy(0.7).priority(.required)
    make.top.right.equalToSuperview().inset(20)            
}   

In case you are curious, here is a link to a GitHub Gist of my custom bubble view.

非常感谢任何帮助!

编辑:我更新的代码:

bubble.snp.makeConstraints { (make) in
    
make.width.lessThanOrEqualToSuperview().multipliedBy(0.7).priority(.required)
    make.width.equalToSuperview().multipliedBy(0.7).priority(.low)
    make.top.right.equalToSuperview().inset(20)
}

您需要另一个约束,将宽度 等于 设置为父视图宽度的 0.7 倍,但优先级较低(例如 100)。当存在歧义时,这为布局引擎提供了更多目标——而不等式总是模棱两可的。