本地化无法更新故事板RTL(从右到左)用于Urdu支持

时间:2015-07-10 06:26:01

标签: ios objective-c localization autolayout

我正在尝试将英语更改为urdu(RTL)语言后更新所有控制器。

平均值

如果tableview单元格包含左侧存在的图像,而tableview单元格中右侧存在文本。当用户选择urdu语言时,它会进行交换。右侧和文字中添加的图像显示在左侧。

使用自动布局。设置正确的约束就像前导和尾随一样如果我们改变苹果语言,它会照顾它。

使用此代码设置Apple语言。写了一个刷新视图的通知。但它不会立即起作用。

如果用户选择乌尔都语

 if([preferredLangCode isEqualToString:@"ur"])
    {
        [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"ur", nil] forKey:@"AppleLanguages"];
        [[NSUserDefaults standardUserDefaults] synchronize];

        [[NSNotificationCenter defaultCenter]postNotificationName:@"AppLayoutDirectionTrigger" object:nil];
    }

用于刷新视图

-(void)updateUIForRTLSupportConfirmedScreen:(NSNotification *)notification
{
    for (UIView *view in self.view.subviews)
    {
            [view setNeedsDisplay];   
    }
}

不更新我的视图而不交换视图子视图。

如果我停止应用并再次运行它将起作用。但我想立即反映这些变化。

1 个答案:

答案 0 :(得分:1)

建议的方法是使用系统语言,并从您的应用中删除语言选择。从iOS 8开始,用户可以从语言列表中选择Urdu,即使iOS系统应用程序不支持。像这样,您不必担心实施语言选择器并更改AppleLanguages

保持语言选择是一项艰巨的任务。在iOS 8上,您必须删除所有视图的所有约束,并重新创建它们以使用相反的Left和Right属性。在iOS 9上,您必须浏览每个视图并更新要显示的每个视图的semanticContentAttribute