为iOS创建从右到左的用户界面
按照苹果的说法 “iOS不会自动镜像控件,因此,如果您希望iOS应用程序具有这种行为,请对控件进行子类化,并覆盖绘图方法。” 当用户在主屏幕中选择阿拉伯语或希伯来语时,我想镜像我的整个UI。我在搜索同样的教程和文档,但没有任何帮助 请查找我迄今为止所做的工作: 我使用的是Xcode 6.1,应用的目标是从iOS 7到iOS 8.1。 自动布局已启用,并且未使用左或右约束。我只使用前导或尾随约束。 在项目设置中启用了基础国际化,并且在本地化中添加了语言。但是,当我在设备中运行应用程序并将设备语言和区域设置为阿拉伯语时,我无法获得镜像UI。我是否必须在代码中执行任何操作才能获得镜像UI? 支持基于RTL的UI的最佳方式是什么?如何子类化控件和重写绘图方法为iOS创建从右到左的用户界面,ios,objective-c,iphone,xcode,Ios,Objective C,Iphone,Xcode,按照苹果的说法 “iOS不会自动镜像控件,因此,如果您希望iOS应用程序具有这种行为,请对控件进行子类化,并覆盖绘图方法。” 当用户在主屏幕中选择阿拉伯语或希伯来语时,我想镜像我的整个UI。我在搜索同样的教程和文档,但没有任何帮助 请查找我迄今为止所做的工作: 我使用的是Xcode 6.1,应用的目标是从iOS 7到iOS 8.1。 自动布局已启用,并且未使用左或右约束。我只使用前导或尾随约束。 在项目设置中启用了基础国际化,并且在本地化中添加了语言。但是,当我在设备中运行应用程序并将设备语言和
请使用获取我的应用程序的示例屏幕截图。我刚刚从苹果文档中找到了一种简单的方法,而不是使用两个RTL和LTR语言的故事板
let languages = ["ar"]
UserDefaults.standard.set(languages, forKey: "AppleLanguages")
为什么不尝试在故事板中使用两个不同的视图,并附加相同的IBOutlet?把你需要的场景放在语言之上。我只是把它作为最后一个选项,因为我有将近43个屏幕,对于iPhone6 plus,我也计划有不同的故事板。我只是想知道,为什么苹果没有明确的文档说明,而os x应用程序可以毫不费力地镜像:(在这种情况下,您需要通过代码库管理所有约束。@Mrunal您的意思是我必须管理代码中的所有约束,并且当用户选择阿拉伯语时,我必须更改约束,以便获得镜像的UI?是的,如果我将左约束从10更改为250,我的uilabel将移动到右对齐。但这非常重要。)tic,不是很好的解决方案。@Jitendra问题出在哪里?请详细解释我想将所有UI移到左侧所有UI都不可能用上述答案。它只能移动标签和文本。对于UI控件,您必须自定义并重新绘制控件。例如,如果您想让UISegmentedControl切换RTL,则必须自定义控件。查看我问题中的链接。我想更改我应用程序中的语言。(不是整个设备语言)。根据语言选择,我已在“AppleLanguages”中设置语言代码值NSUserDefaults。但是我如何刷新UI?@VivekShah您必须为此强制重新加载窗口根视图控制器。对于此解决方案的工作原理,这个答案可能会受益于一些额外的上下文/解释。
let languages = ["ar"]
UserDefaults.standard.set(languages, forKey: "AppleLanguages")