RTL语言在iOS 9中的行为

我们的应用程序支持阿拉伯语,波斯语等RTL语言。

在iOS 9之后,导航控制器和标签栏控制器行为已经改变。 我发现只有这个链接ios-9-disable-support-for-right-to-left-language才能解决这个问题

我写我的appDelegate这个代码,它工作正常,导航栏和标签栏设置为LTR。

 if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0")) { [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; [[UITabBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; } 

我的问题是:我不能改变交互式stream行手势方向。

在这里输入图像说明

我一直在同样的问题挣扎,终于find解决办法

你只需要为navigationController.view设置SemanticContentAttribute

在rootViewController的viewDidLoad中:

 [self.navigationController.view setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; [self.navigationController.navigationBar setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; 

如果你正在创build自定义popup窗口,你可以通过两种方式来处理。

  1. 在.h文件中定义一个macros,以在运行时检测它是否是RTL语言。

    定义IS_RTL [UIApplication sharedApplication] .userInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionRightToLeft

然后根据IS_RTL.Like创build自定义布局

 if (IS_RTL) //Do Arabic Implementation else //Do other language implementation 
  1. 如果您是从Storyboard创buildUI,那么对首行或尾部空间的设置约束和第一项的值将是尊重语言方向

在Swift中

 navigationController?.view.semanticContentAttribute = .forceRightToLeft navigationController?.navigationBar.semanticContentAttribute = .forceRightToLeft