首页 > 解决方案 > 静态 UIView 在本地化为法语时更改宽度

问题描述

我在视图中嵌入了一个 UILabel 和一个 UITextField (因此我可以隐藏视图并使多个项目同时显示/显示,而不是隐藏每个项目)。这是英语中实际操作的屏幕截图: 在此处输入图像描述

当我切换到法语并运行时,我得到了这个: 在此处输入图像描述

您可以看到运行文本字段和右侧的标签。不过只有法语。德语、西班牙语、意大利语都可以。我缩短了占位符/文本字段中的法语文本,但这并没有改变任何东西。这是情节提要定义的一部分: 在此处输入图像描述

标签中的文本(您的声音已保存)居中,文本字段居中。当本地化为法语时,什么会导致标签的长度发生如此大的变化?标签和文本视图没有链接;两者都是由“隐藏视图”定义的 trailingEdge。更多检查 - 法语中的“隐藏视图”比其他视图宽 39(在 ViewDidLoad 的开头查看)。当我们进入主要空闲状态时,等待用户点击录制按钮,“隐藏视图”的宽度又增加了 191。这解释了文本字段和标签的拉伸,因为它们被固定在隐藏视图的右侧。文本字段框架在英语和法语中是相同的。所以我想问题是为什么 UIView 宽度在法语中发生变化,而不是英语。

标签: iosuiviewlocalization

解决方案


当标签不适合由约束定义的宽度时,它有两种布局方式:

  1. 如果有任何约束,则打破可选约束
  2. 截断标签

由于您的尾随约束是可选的(优先级 < 1000),布局引擎会破坏它并导致标签离开屏幕。因此,要解决此问题,需要尾随约束(即将其优先级设置为 1000)。


推荐阅读