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)。当存在歧义时,这为布局引擎提供了更多目标——而不等式总是模棱两可的。
我正在尝试对“聊天气泡式”视图进行限制。
我的问题是当设备旋转时,视图没有扩展到设备宽度的 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)。当存在歧义时,这为布局引擎提供了更多目标——而不等式总是模棱两可的。