ios - 静态 UIView 在本地化为法语时更改宽度
问题描述
我在视图中嵌入了一个 UILabel 和一个 UITextField (因此我可以隐藏视图并使多个项目同时显示/显示,而不是隐藏每个项目)。这是英语中实际操作的屏幕截图:
您可以看到运行文本字段和右侧的标签。不过只有法语。德语、西班牙语、意大利语都可以。我缩短了占位符/文本字段中的法语文本,但这并没有改变任何东西。这是情节提要定义的一部分:
标签中的文本(您的声音已保存)居中,文本字段居中。当本地化为法语时,什么会导致标签的长度发生如此大的变化?标签和文本视图没有链接;两者都是由“隐藏视图”定义的 trailingEdge。更多检查 - 法语中的“隐藏视图”比其他视图宽 39(在 ViewDidLoad 的开头查看)。当我们进入主要空闲状态时,等待用户点击录制按钮,“隐藏视图”的宽度又增加了 191。这解释了文本字段和标签的拉伸,因为它们被固定在隐藏视图的右侧。文本字段框架在英语和法语中是相同的。所以我想问题是为什么 UIView 宽度在法语中发生变化,而不是英语。
解决方案
当标签不适合由约束定义的宽度时,它有两种布局方式:
- 如果有任何约束,则打破可选约束
- 截断标签
由于您的尾随约束是可选的(优先级 < 1000),布局引擎会破坏它并导致标签离开屏幕。因此,要解决此问题,需要尾随约束(即将其优先级设置为 1000)。
推荐阅读
- ruby - 这两种字符编码有什么区别:“å”(195、165)和“å”(97、204、138)
- arrays - 是否可以制作具有多种数据类型的数组?
- python-3.x - 在 python3 format() 函数中打印撇号的符号
- docker - 如何在不退出容器的情况下在 Dockerfile 中导入 Streamsets 管道
- linux - 在 Virtual Box Win10 内核崩溃中安装 Linux Mint
- ruby - 我在 OptionParser 中有三个标志,但它只能访问其中两个
- typescript - TypeError:无法读取 Jest 中未定义的属性“id”
- ios - 通过 Swift 包管理器使用 Storyboard 和 XIB 时崩溃
- azure - PowerApp 的用户无法从 azure key vault 获取机密(通过 Power Automate)
- python-3.x - Chudnovsky算法python不正确的小数