你好,我希望将整个 UI 视图转换成阿拉伯语【从右到左】,如果用户更改了设置中的语言并打开应用程序。
我有以下问题:
1)我需要为每个语言创建单独的 UI 吗? 2)有没有简便的方法来实现这一点? 3)我需要完全转换 UI,就像镜子一样,从左边 [滑动菜单] 到右边等等... 4)Xcode 8.2 再次引入了自动调整大小和自动布局,我可以在不使用自动布局的情况下完成此操作吗?
你好,我希望将整个 UI 视图转换成阿拉伯语【从右到左】,如果用户更改了设置中的语言并打开应用程序。
我有以下问题:
1)我需要为每个语言创建单独的 UI 吗? 2)有没有简便的方法来实现这一点? 3)我需要完全转换 UI,就像镜子一样,从左边 [滑动菜单] 到右边等等... 4)Xcode 8.2 再次引入了自动调整大小和自动布局,我可以在不使用自动布局的情况下完成此操作吗?
不管使用哪种语言,你只需要创建一个UI。
有一个简单的方法,你可以使用本地化。 苹果国际化文档
iOS会完成UI转换(这只适用于uikit控制器,请参见下面的编辑)。
自动布局与本地化无关。通常最好使用自动布局,否则必须为不同的屏幕大小计算。 再次强调,与本地化无关。请参见下面的编辑。
编辑:如果您想要镜像您自己的视图,例如uiimage和uilabel。那么您必须自己使用自动布局或框架来完成。如果您正在使用uinavigation或tabbarcontroller,则这些控制器将由iOS进行镜像处理。因此,您必须自己处理内容视图。 您可以生成不同的约束,并在运行时相应地安装它。但如果您的视图非常复杂,则应设计两个不同的storyboard,一个用于从左到右,另一个用于从右到左,并在应用程序启动时加载适当的storyboard。
重新编辑: 这是我的应用程序的英文版。但是,我的应用程序不支持从右到左的语言。正如您所看到的,iOS 会自动转换表格单元格。我只是在英语、德语等之外增加了阿拉伯语的国际化支持。因此,如果您在适当的位置使用 UIKit 控件,则它将自动转换。但是,如果您的应用程序非常定制化,并具有复杂的视图层次结构,则 iOS 无法帮助您,那么您必须自己完成。如果您坚持使用标准和简单的层次结构,则不必太担心。只需测试并查看结果即可。
因此,例如在我的应用程序中,我所要做的就是将字符串翻译成从右到左的语言。
编辑: 这里是关于第四个问题的正确信息 苹果文档
使用自动布局来相对于彼此布置视图,而无需固定的起点、宽度和高度,因此当语言或区域设置更改时,视图会适当地重新定位和调整大小。自动布局使得可以为所有语言拥有一个 .storyboard 和 .xib 文件集合。