我开发了应用程序,我需要提供两种语言英语和阿拉伯语的支持。在应用程序中有一个设置屏幕,用户可以将语言从英语更改为阿拉伯语,反之亦然。
有关详细信息,请参阅以下屏幕截图。
执行localization
的代码,我已刷新storyboard
以更新用户界面。
- (void)updateLanguage {
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"MainNavigationController"];
[[UIApplication sharedApplication].keyWindow setRootViewController:vc];
}
从iOS 8
到iOS 9
,它可以正常工作并更新用户界面,但在iOS 10
中它不会更新用户界面。有关详细信息,请查看以下屏幕截图。
如何在iOS 10
?
以下是需要在iOS 10
中更新的正确用户界面。
注意:当应用程序从后台到前台然后它 工作正常。
答案 0 :(得分:1)
我找到了如何使用UISemanticContentAttribute
基于语言选择更新布局的方法。
目标C
if(IS_OS_10_OR_LATER) {
if ([[[NSUserDefaults standardUserDefaults] valueForKey:@"Ln"] isEqualToString:@"Ar"])
[[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];
else
[[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight];
}
由于我已将当前语言选择存储在NSUserDefaults
中,因此会更新布局。
SWIFT 3.0
UIView.appearance().semanticContentAttribute = .forceLeftToRight