2017-01-10 6 views
0

私は内部的にアプリケーション言語(LTR-RTL)を切り替えてからストーリーボードを再初期化しています。ここHanging(Freezing)issue UISemanticContentAttribute = .ForceRightToLeft

は、コードの一部です:

let semanticContentAttribute: UISemanticContentAttribute = language == .Arabic ? .ForceRightToLeft : .ForceLeftToRight 

UIView.appearance().semanticContentAttribute = semanticContentAttribute 
UINavigationBar.appearance().semanticContentAttribute = semanticContentAttribute 

問題はそれを却下しながら、すべての提示ビューコントローラが3-6秒間フリーズ、です。

この原因は何ですか?

+0

この解決策を見つけましたか? –

+0

問題はアプリで多すぎるという問題でした。 iOSフレームワーク自体から多くの内部ビューがあります。たとえば、UISearchBarを初期化すると、UISearchBar自体にUITextField、UILabel、キャンセルボタン、クリアボタン、バックグラウンドビューなどがあります。したがって、各ビューをLTRからRTLに切り替えるのに時間がかかりました。 解決方法:UIViewの拡張機能を作成し、IBDesignable属性(Bool)を追加しました。ですから、.xibファイルにUIViewを作成するときに、このプロパティをチェックするだけで、この特定のビューを切り替え、その中のすべてのビューを切り替えることはありません。 –

+0

お返事ありがとうございます –

答えて

0

semanticContentAttributeappearance()プロキシに設定することはサポートされていません。アプリはまだあなたが上書きしている言語ではない言語で動作していると考えているので、他の多くの問題やバグにぶち込まれます。

あなたのアプリに言語スイッチャーを追加するだけで、もっと混乱させることになります。ユーザーは、自分のデバイスが設定されている言語に従うことを期待しています。