根据苹果文档 “iOS 不会自动镜像控件,因此如果您希望 iOS 应用程序具有此行为,请对控件进行子类化并重写绘图方法。”
当用户在主屏幕中选择阿拉伯语或希伯来语时,我想镜像我的整个用户界面。我正在寻找相同的教程和文档,但没有任何帮助。
请找出我到目前为止所做的事情: 我使用的是 Xcode 6.1,应用程序的目标是从 iOS 7 到 iOS 8.1。 自动布局已启用,并且未使用左侧或右侧约束。我仅使用前导或尾随约束。 在项目设置中启用了基本国际化,并且在本地化中添加了语言。但是当我在设备中运行应用程序并将设备语言和区域设置为阿拉伯语时,我无法获得镜像 UI。我是否需要在代码中执行任何操作才能获得镜像 UI? 支持基于 RTL 的 UI 的最佳方式是什么?如何子类化控件并重写绘图方法?
我刚刚从 Apple 文档中找到了一种简单的方法,而不是使用 2 个 RTL 和 LTR 语言的故事板。
NSArray* languages = [NSArray arrayWithObjects:@"ar", nil]; [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
您的应用程序现在将适用于具有镜像 UI 的 RTL 语言,而无需 2 个故事板。 注意:如果您没有正确设置自动布局约束,它将无法工作。然而,由于新的屏幕,您必须学习使用自动布局。
在斯威夫特
let languages = ["ar"]
UserDefaults.standard.set(languages, forKey: "AppleLanguages")