为iOS创建从右到左的用户界面

时间:2014-11-24 11:59:19

标签: ios objective-c iphone xcode

根据苹果documentation “iOS不会自动镜像控件,因此如果您想要iOS应用程序的此行为,请将控件子类化并覆盖绘图方法。”

当用户在主屏幕中选择阿拉伯语或希伯来语时,我希望镜像我的整个UI。我正在寻找相同的教程和文档,但没有任何帮助。

请查看我到目前为止所做的事情: 我正在使用Xcode 6.1和iOS 7到iOS 8.1的应用目标。 Autolayout已启用,并且未使用左或右约束。我只使用前导或尾随约束。 在项目设置中启用基础国际化也在本地化中添加了语言。但是当我在设备中运行应用程序并将设备语言和区域设置为阿拉伯语时,我无法获得镜像UI。我是否必须在代码中执行任何操作才能获得镜像UI? 支持基于RTL的UI的最佳方法是什么?如何子类控制和覆盖绘图方法?

请使用this link获取我的应用的示例截图。

2 个答案:

答案 0 :(得分:2)

我刚从Apple文档中找到了一种简单的方法,而不是为RTL和LTR语言提供2个故事板。

  1. 首先在项目设置中启用Base国际化
  2. 添加您的语言 - 在我的情况下,我添加了阿拉伯语和希伯来语
  3. xCode将本地化您的stroy板,您可以看到不同语言的不同故事板字符串
  4. 在新创建的字符串文件中更改标签的文本。在我的情况下,我改变了阿拉伯语和希伯来语字符串文件
  5. 使用AutoLayout设计整个UI。
  6. 不要使用左或右约束。而不是仅使用前导和尾随约束
  7. 在主要功能中添加以下代码,然后在模拟器中运行应用
  8. NSArray* languages = [NSArray arrayWithObjects:@"ar", nil]; 
    [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
    

    您的应用现在可以使用带有镜像用户界面的RTL语言而无需2个故事板。 注意:如果您没有正确设置autolayout约束,它将无法正常工作。但是,由于新屏幕,您必须学会使用自动布局。

答案 1 :(得分:0)

在Swift

let languages = ["ar"]
UserDefaults.standard.set(languages, forKey: "AppleLanguages")