我有一个支持不同语言的iOS应用程序,它使用LTR Storyboard和RTL Storyboard,并从Plists中读取。当我在带有英文iOS版本的设备上运行应用程序时,在语言之间切换时,一切看起来都很完美。但是当我将iPhone OS语言改为RTL语言时。用户界面搞砸了。
当我启用本地化以更改主屏幕上的应用名称时,会发生这种情况。
知道为什么会这样吗?
整个菜单搞砸了,例如,它应该在左侧,而它应该在右侧,菜单项图标必须在左侧,标签在右侧。
答案 0 :(得分:1)
这是因为您使用前导和尾随约束。 在LTR环境中,领导意味着在RTL环境中,领先意味着正确。 这是Apple帮助我们轻松处理RTL / LTR的方式:[在您的情况下,不是那么多...... 要禁用此行为,请更改视图的语义属性。
语义内容
如果您使用前导和尾随约束来布局视图,那么 视图在切换时自动翻转位置 从左到右的语言(如英语)和从右到左的语言 (像阿拉伯语)。但是,某些界面元素不应更改 他们的立场基于阅读方向。例如,按钮 基于物理方向(向上,向下,向左和向右) 应始终保持相同的相对方向。
视图的semanticContentAttribute属性决定了 在从左到右切换时,视图的内容应该翻转 从右到左的语言。
在界面构建器中,在“属性”中设置“语义”选项 督察。如果值为Unspecified,则视图的内容将翻转 阅读方向。如果设置为“空间”,“回放”或“强制” 从左到右,内容始终以前沿排列 在左边,后边缘在右边。强制从右到左 始终将前端的内容放在右侧和 左边的后缘。
答案 1 :(得分:0)
假设您已经在使用Auto Layout,
确保您已完成以下事项
删除固定宽度约束。允许显示要调整大小的本地化文本的视图。如果使用固定宽度约束,则本地化文本可能会在某些语言中出现裁剪。
使用内在内容大小。文本字段和标签的默认行为是自动调整大小。如果视图未调整为本地化文本的大小,请选择视图并选择编辑器>尺寸适合内容。
使用前导和尾随属性。添加约束时,请使用水平约束的前导和尾随属性。对于从左到右的语言,例如英语,前导和尾随属性等同于左和右。对于从右到左的语言,例如希伯来语或阿拉伯语,前导和尾随等同于左右。前导和尾随属性是水平约束的默认值。
将视图固定到相邻视图。钉扎会导致多米诺骨牌效应。当一个视图调整大小以适合本地化文本时,其他视图也会执行相同操作。否则,某些语言的视图可能会重叠。
不断测试布局更改。使用不同的语言设置测试您的应用,如Testing Your Internationalized App。
中所述 不要设置窗口的最小尺寸或最大尺寸。让窗口及其内容视图调整为包含视图的大小,这可能会在语言更改时更改。
请参阅more
答案 2 :(得分:0)