本地化为法语时,静态 UIView 更改宽度

Static UIView changes width when localized to French

我在一个视图中嵌入了一个 UILabel 和一个 UITextField(因此我可以隐藏视图并同时制作多个项目 dis/appear,而不是隐藏每个项目)。这是英文版的 thing in action 的屏幕截图:

当我切换到法语和 运行 时,我得到了这个:

您可以在右侧看到 运行 文本字段和标签。不过只有法语。德语、西班牙语、意大利语都可以。我缩短了 placeholder/textfield 中的法语文本,但这并没有改变任何内容。这是故事板定义的一部分:

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

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

  1. 打破可选的限制条件
  2. 截断标签

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