Swift:自动布局约束在设备旋转时行为不正确?

时间:2020-12-28 20:59:36

标签: ios swift autolayout snapkit

我正在尝试为“聊天气泡式”视图设置约束。

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

这是一张图片来演示正在发生的事情。

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

enter image description here

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

enter image description here

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

这是我使用 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)
}

1 个答案:

答案 0 :(得分:1)

您需要另一个约束,将宽度等于设置为超级视图宽度的 0.7 倍,但优先级较低(例如 100)。这让布局引擎在存在歧义时有更多目标——而不平等总是不明确的。

enter image description here

enter image description here

enter image description here

enter image description here

相关问题