ios - 从右到左语言中基于百分比的自动布局布局

标签 ios cocoa-touch localization autolayout right-to-left

我在我的 View 中放置一个 subview 时遇到问题,该 subview 与后缘有一定的距离。它在常规的从左到右的语言(例如英语)中工作正常,但是当我本地化为从右到左的语言(例如阿拉伯语或希伯来语)时,约束似乎归零并直接对接后缘(在这种情况下为左侧)。我创建了一个最小的测试项目,并且能够在那里重现该问题。

我所有的 View 都是在 xib 文件中设置的,而不是在 Storyboard中。

我用 xib 创建了一个 ViewController。然后我放入一个固定大小的 50x50 subview 并将其放置在距顶部固定 100 的位置,然后将后缘 80% 放置在父 View 的尾部,如屏幕截图所示:

Autolayout Setup

为了更好地衡量并确保翻转 View ,我添加了一个完全独立于其他 subview 的标签。当我用英语运行它时,一切看起来都很棒:

LTR Correct Layout

但是,将设备的语言更改为阿拉伯语后,标签会正确镜像,但似乎忘记了尾随约束的百分比,只看到常量 0,这导致 subview 直接放置在 View 的一侧.

RTL Bad Layout

有谁知道我需要如何修改我的约束才能让设备记住 RTL 语言中基于百分比的后缘约束?

最佳答案

如果您的目标是 iOS 9 或更高版本,则可以使用布局指南 (UILayoutGuide) 来设置间距。基本上,让 View 的后缘紧靠布局指南的前缘,布局指南的后缘紧靠父 View 的后缘,布局指南的宽度等于父 View 宽度的 20%。

在 iOS 9 之前,您可以使用隐藏的虚拟 View 而不是布局指南。

关于ios - 从右到左语言中基于百分比的自动布局布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33699464/

相关文章:

objective-c - 跨 subview Controller 从 UITabBarController 继承/保留 UINavigationBar?

c# - 本地化 xml 标签中的值

Objective-c,将 NSURLConnection 结果传递给 View Controller

iphone - 在 didSelectRowAtIndexPath 中以编程方式编辑 Controller 的标题

objective-c - UINavigationBar 在 StatusBar 下

localization - L20n 翻译文本区域和输入字段中的占位符/属性

c# - 如何在 "website"模式下使用 ResourceManager?

ios - 如何检测 UIBarButtonItem 的 touchesbegan touchesended?

iphone - ios中的过滤器数组检查多个属性

iphone - cellForRowAtIndexPath 中的崩溃