2015-07-10 70 views
0

我試圖在更改英文語言爲烏爾都語(RTL)語言後更新我的所有控制器。本地化無法更新storybaord RTL(右至左)對於Urdu支持

手段,

如果tableview中單元格中包含的圖像出現在左側,文本目前在tableview中細胞右側。當用戶選擇烏爾都語時,它會交換。右側添加圖像,文字左側。

爲此自動佈局。設置適當的約束像引導和拖尾一樣,如果我們改變蘋果語言,它會照顧到這一點。

使用此代碼來設置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]; 
    } 
} 

不更新我的看法不交換看法subiviews。

它會工作,如果我停止應用程序,並再次運行它的工作。但我想立即反映這些變化。

任何人都可以幫我解決這個問題。

問候 Jitendra

+0

在回答你的問題之前:爲什麼你不依賴系統語言有什麼特別的理由嗎?不建議您在應用中手動設置AppleLanguages。 此外:這是在iOS 9或8? – wakachamo

+0

我想支持urdu langauage這就是爲什麼我將它添加到NSUSERDEFAULTS。 – Jitendra

+0

您可以通過簡單地在您的Xcode項目中添加一個Urdu本地化來實現。在iOS 8+上,用戶可以選擇首選語言,即使它們不受系統本身支持。 – wakachamo

回答

1

建議的方法是使用系統語言,並從應用中刪除語言選擇。從iOS 8開始,用戶可以從語言列表中選擇Urdu,即使iOS系統應用程序不支持。像這樣,您不必擔心實施語言選擇器並更改AppleLanguages

保持語言選擇器是一項艱鉅的任務。在iOS 8上,您將不得不移除所有視圖的所有約束,並重新創建它們以對每個視圖使用相反的Left和Right屬性。在iOS 9上,您必須遍歷每個視圖,並更新要顯示的每個視圖的semanticContentAttribute