iOS 9 中的 RTL 语言行为

问题描述 投票:0回答:4

我们的应用程序支持 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];
}

但是我的问题是: 我无法更改交互式弹出手势方向。

ios objective-c ios9
4个回答
3
投票

我一直在为同样的问题苦苦挣扎,终于找到了解决方案

你只需要为navigationController.view设置SemanticContentAttribute

在rootViewController的viewDidLoad中:

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

2
投票

在斯威夫特

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

0
投票

如果您要创建自定义弹出窗口,有两种方法可以处理此问题。

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

    定义IS_RTL [UIApplication共享应用程序].userInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionRightToLeft

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

if (IS_RTL)
//Do Arabic Implementation
else
//Do other language implementation
  1. 如果您从 Storyboard 创建 UI,则对前导或尾随空间以及第一项的值的设置约束将为 尊重语言方向

0
投票

正如我所见,我也遇到了类似的问题。

在 iOS 9 及更高版本上,某些游戏开始以英语(主要语言)启动,忽略 iOS 设备上的语言设置。 如果游戏的设置中没有语言更改,那就太糟糕了。我不知道如何打开俄语,例如通过手动启动。

它仅适用于自 iOS 11 发布以来从 AppStore 下架的旧 32 位游戏(大量此类游戏,天哪)。 一些开发人员决定不调整语言设置。

有什么技巧可以让我通过 Filza/iFile 挖掘游戏文件并更改某些内容以让游戏以另一种语言运行吗?

(即使我们有一个游戏有语言更改设置,在更改俄语游戏后,例如关闭游戏并重新启动后,它仍然以英语运行)。

至少在 iOS 9 和 10 上会发生这种情况。我不知道如何解决。谢谢你。

© www.soinside.com 2019 - 2024. All rights reserved.