在Objective C的自动布局中使用约束来支持RTL语言

时间:2014-04-13 20:22:15

标签: ios autolayout

我在iOS上有一个应用程序,我正在尝试本地化RTL语言。显然,布局需要与语言相对应。

要开始使用,我正在尝试使用rtl语言区域设置打开应用程序时,在一个屏幕底部的按钮更改其顺序。

我使用自动布局,并且我在按钮和视图之间添加了关于使用屏幕主视图的尾随/前导水平视图设置的约束,这是我理解应该完成的。使用拖放蓝线方法来制作约束。另外,我在另一个主题的指示下在我的主中使用了以下代码:

#if TARGET == TARGET_AR
        NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:[NSArray arrayWithObject:@"ar-SA"] forKey:@"AppleLanguages"];
        [defaults synchronize];
#endif

这仍然不起作用,按钮保持原样。关于如何解决这个问题的任何建议?

谢谢

2 个答案:

答案 0 :(得分:1)

我不知道你在哪里建议使用宏来确定语言环境,但这绝对是错误的。

您最有可能缺少的是实际的RTL本地化(您使用Base非常棒!)。在文件导航器中选择项目文件,您应该看到如下内容:

您需要做的是添加实际的RTL本地化。所以点击' +'在使用基础国际化复选框上方,然后在弹出菜单中选择阿拉伯语(ab),然后在显示的工作表中继续。如果您在阿拉伯语是首选语言的手机上构建和运行您的应用程序,那么约束应该按照您的预期进行翻转!

答案 1 :(得分:-2)

我认为正确的方法是为每个区域设置单独的故事板,这样您不仅可以自定义文本方向(RTL或LTR),还可以为各种UI元素使用不同的语言。显然,您需要为每个故事板连接IBOutlets和IBActions,但这样会比您提出的更有效,更容易实现。祝你好运!