iOS9强制LTR UINavigationController RTL语言的推送方向

时间:2015-10-07 17:40:04

标签: localization uinavigationcontroller ios9 xcode7 right-to-left

我在处理一个旧的应用程序时遇到了这个问题,该应用程序具有阿拉伯语的本地化,它是RTL编写的。我注意到在iOS9中,我的UINavigationController在推送视图控制器时从右向左显示动画。我的应用视图尚未准备就绪。即使在阿拉伯语的故事板中,它们也被设计为从左到右的过渡(因为之前在较旧的iOS中,UINavigationController仅支持LTR过渡)。现在这个RTL动画要求我重新设计很多资产,所以我想强制它显示所有语言的LTR动画。经过一番研究后,我找到了解决方案。

2 个答案:

答案 0 :(得分:4)

在iOS9中,为此目的有一个新的常量read。以下代码修复了问题并强制从左到右动画:

UISemanticContentAttributeForceLeftToRight

我们首先检查iOS版本以避免早于9的iOS版本出错。 我在我的基本ViewController类的if(([[NSProcessInfo processInfo] respondsToSelector:@selector(isOperatingSystemAtLeastVersion:)]) && [[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){9, 0, 0}]) { [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; } 中添加了上面的代码(我的所有ViewController类都从这个继承)。

答案 1 :(得分:1)

由于它只发生在你的app委托中的iOS 9上,所以写下以下内容:

if #available(iOS 9.0, *) {
    UIView.appearance().semanticContentAttribute = .ForceLeftToRight
} else {
    // Fallback on earlier versions
};