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

Posted

技术标签:

【中文标题】静态 UIView 在本地化为法语时更改宽度【英文标题】:Static UIView changes width when localized to French 【发布时间】:2020-01-26 06:22:15 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

    打破可选限制(如果有) 截断标签

由于您的尾随约束是可选(优先级

【讨论】:

谢谢。不清楚是文字太长,但我按照你的建议做了修改,问题就解决了。您给出的解释很有帮助,将来也会使我的代码受益。

以上是关于静态 UIView 在本地化为法语时更改宽度的主要内容,如果未能解决你的问题,请参考以下文章

本地化如何适用于语言和国家/地区?

本地化不适用于App的初始加载

在 Storyboard 上更改 UIButton 的本地化

在 Qt 应用程序菜单栏的主菜单中添加和本地化菜单项

本地化 Windows 窗体并在运行时更改语言

iOS 应用本地化不起作用