2014-11-24 31 views
1

按苹果documentation “iOS不会自动镜像控制,因此如果您想为iOS应用执行此操作,请为该控件创建子类并覆盖绘图方法。”创建用于iOS的从右到左用户界面

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

请使用Xcode 6.1和从iOS 7到iOS 8.1的应用程序目标找到我迄今为止所做的工作: 。 Autolay已启用,我没有使用左或右限制。我只使用前导或尾随约束。 在项目设置中启用了基本国际化,还在本地化中添加了语言。但是当我在设备上运行应用程序并将设备语言和区域设置为阿拉伯语时,我无法获取镜像的用户界面。我必须在代码中做任何事情才能获得镜像的用户界面? 什么是支持基于RTL的用户界面的最佳方式?如何继承控件并重写绘图方法?

请使用this link获取我的应用程序的样本截图。

+1

为什么不尝试在故事板中使用两个不同的视图,并附带相同的IBOutlet?根据语言选择你需要的场景。 – Mrunal 2014-11-24 12:30:01

+0

我只是把它作为最后一个选项,因为我有近43个屏幕,并且还为iPhone 6加上计划有不同的故事板。我只是想知道为什么苹果没有明确的文件,当这个OS X应用程序可以没有任何努力的镜像:( – Bluewings 2014-11-24 12:33:39

+0

在这种情况下,你需要通过代码库管理所有的约束条件 – Mrunal 2014-11-24 12:35:25

回答

2

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

  1. 首先使基地的国际化在项目设置
  2. 添加你的语言 - 在我的情况我已经添加阿拉伯语和希伯来语
  3. 的Xcode将本地化STROY板,你可以看到不同的语言不同的故事板串
  4. 在新创建的字符串文件中更改标签的文本。在我的情况下,我改变了阿拉伯文和希伯来字符串文件
  5. 使用AutoLayout设计整个用户界面。
  6. 请勿使用左或右限制。相反,仅使用开头和结尾的约束
  7. 添加下面的代码在你的主要功能和运行应用程序在模拟器
NSArray* languages = [NSArray arrayWithObjects:@"ar", nil]; 
[[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"]; 

你的应用程序现在会为没有RTL语言与镜像UI工作有2个故事板。 注意:如果您没有正确设置自动布局约束,它将无法正常工作。但是,由于新屏幕,您必须学会使用自动布局。

+0

这对我不起作用 – Jitendra 2015-07-06 11:28:50

+0

@Jitendra是什么问题?详细解释请 – Bluewings 2015-08-07 06:42:50

+0

我想把所有的用户界面移到左侧 – Jitendra 2015-08-07 08:32:47