iOS本地化搞乱了UI

时间:2016-08-12 07:31:47

标签: ios objective-c swift xcode

我有一个支持不同语言的iOS应用程序,它使用LTR Storyboard和RTL Storyboard,并从Plists中读取。当我在带有英文iOS版本的设备上运行应用程序时,在语言之间切换时,一切看起来都很完美。但是当我将iPhone OS语言改为RTL语言时。用户界面搞砸了。

当我启用本地化以更改主屏幕上的应用名称时,会发生这种情况。

知道为什么会这样吗?

整个菜单搞砸了,例如,它应该在左侧,而它应该在右侧,菜单项图标必须在左侧,标签在右侧。

LTR iOS语言设备上的RTL语言,即英语   

RTL iOS语言设备上的RTL语言 enter image description here

3 个答案:

答案 0 :(得分:1)

这是因为您使用前导和尾随约束。 在LTR环境中,领导意味着在RTL环境中,领先意味着正确。 这是Apple帮助我们轻松处理RTL / LTR的方式:[在您的情况下,不是那么多...... 要禁用此行为,请更改视图的语义属性。

  

语义内容

     

如果您使用前导和尾随约束来布局视图,那么   视图在切换时自动翻转位置   从左到右的语言(如英语)和从右到左的语言   (像阿拉伯语)。但是,某些界面元素不应更改   他们的立场基于阅读方向。例如,按钮   基于物理方向(向上,向下,向左和向右)   应始终保持相同的相对方向。

     

视图的semanticContentAttribute属性决定了   在从左到右切换时,视图的内容应该翻转   从右到左的语言。

     

在界面构建器中,在“属性”中设置“语义”选项   督察。如果值为Unspecified,则视图的内容将翻转   阅读方向。如果设置为“空间”,“回放”或“强制”   从左到右,内容始终以前沿排列   在左边,后边缘在右边。强制从右到左   始终将前端的内容放在右侧和   左边的后缘。

答案 1 :(得分:0)

假设您已经在使用Auto Layout, 确保您已完成以下事项
删除固定宽度约束。允许显示要调整大小的本地化文本的视图。如果使用固定宽度约束,则本地化文本可能会在某些语言中出现裁剪。

使用内在内容大小。文本字段和标签的默认行为是自动调整大小。如果视图未调整为本地化文本的大小,请选择视图并选择编辑器>尺寸适合内容。

使用前导和尾随属性。添加约束时,请使用水平约束的前导和尾随属性。对于从左到右的语言,例如英语,前导和尾随属性等同于左和右。对于从右到左的语言,例如希伯来语或阿拉伯语,前导和尾随等同于左右。前导和尾随属性是水平约束的默认值。

将视图固定到相邻视图。钉扎会导致多米诺骨牌效应。当一个视图调整大小以适合本地化文本时,其他视图也会执行相同操作。否则,某些语言的视图可能会重叠。

不断测试布局更改。使用不同的语言设置测试您的应用,如Testing Your Internationalized App

中所述

不要设置窗口的最小尺寸或最大尺寸。让窗口及其内容视图调整为包含视图的大小,这可能会在语言更改时更改。
请参阅more

答案 2 :(得分:0)

可能是一些限制因素。在故事板中,您可以使用预览编辑器以不同语言在不同设备大小中获取UI的预览。

enter image description here