1

我在處理一箇舊的應用程序時遇到了這個問題,該應用程序對於編寫RTL的阿拉伯語進行了本地化。我注意到在iOS9中,當推送視圖控制器時,我的UINavigationController顯示的是從右到左的動畫。我的應用程序視圖尚未準備好。即使在阿拉伯語故事板中,它們也被設計用於從左到右的過渡(因爲之前在較舊的iOS中,UINavigationController僅支持LTR過渡)。現在這個RTL動畫需要重新設計很多資源,所以我想強制它爲所有語言顯示LTR動畫。經過一些研究後,我找到了解決方案。iOS9強制LTR UINavigationController RTL語言的推送方向

+1

,因爲我已經不是我的搜索過程中發現了這樣的話題這僅僅是共享的目的。我在下面回答。 –

回答

3

在iOS9中,爲此目的有一個新的常量UISemanticContentAttributeForceLeftToRight。下面的代碼修復該問題,並強制從左到右動畫:

if(([[NSProcessInfo processInfo] respondsToSelector:@selector(isOperatingSystemAtLeastVersion:)]) && 
    [[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){9, 0, 0}]) { 
    [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; 
} 

我們首先檢查的iOS版本,以避免錯誤的iOS版本低於9 我加了上面的代碼在我基地的ViewController類的ViewDidLoad (我所有的ViewController類都從這個類繼承而來)。

+0

我已將這段代碼放在appdelegate didfinishlaunchingwithoptions中,它適用於所有viewcontrollers.Thanks很多。 – bittu

1

因爲只有在iOS 9在應用程序委託中發生的寫:

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