2017-12-29 22 views
1

私はローカリゼーションを行っている英語/アラビア語のアプリを開発中です。あるテキストフィールドではtextAlignmentプロパティをrightと設定しています。しかし、数字のコンテンツは右側に表示されます。
textAlignmentプロパティ値をデバッグしてダブルチェックしましたが、それは実際にrightです。プロパティがiOSで正しい場合、UITextfieldのテキストは左揃えで表示されますか?

アライメントプロパティは、言語選択(ボタンタップ)によって変更されるため、プログラムによって設定されています。それから私はそれに価値を設定し、右に並べて表示されています。

私はテキストフィールドを選択すると、突然コンテンツが右側に移動し、右揃えとして表示されます。

私は次の行で、プログラムRTLとLTLにレイアウトを変更します。私は解決策を見つけることができません

UIView.appearance().semanticContentAttribute = .forceRightToLeft 

答えて

0

コードの怒鳴る行使用している言語を変更するにはラベルとテキストフィールドのテキストの配置を設定するには

if(isLangEn) 
    { 

     self.textF.textAlignment = NSTextAlignment.left ; 

     self.parentViewOfTextF.semanticContentAttribute = UISemanticContentAttribute.forceLeftToRight ; 

    } 
    else 
    { 

     self.textF.textAlignment = NSTextAlignment.right; 

     self.parentViewOfTextF.semanticContentAttribute = UISemanticContentAttribute.forceRightToLeft; 



    } 
+0

ご返信ありがとうございます。私はそれを自分で分類しました。私は最初に値を設定し、ローディングビュー中に配置とレイアウトを設定しました。私はそのような方法でレイアウトを変更し、次に値を設定するように順序を変更しました。それは働いた:) –

0

このアプローチを試してみてください:アプリの言語を確認するには

  1. を:

    class Language { 
    
        static var isArabicLanguage : Bool { 
        get { 
          return currentAppleLanguage() == "ar" 
        } 
        } 
    } 
    
  2. UIViewControllerの拡張を作成:

    extension UIViewController { 
    
    //Align Textfield Text 
    
    func loopThroughSubViewAndAlignTextfieldText(subviews: [UIView]) { 
    if subviews.count > 0 { 
        for subView in subviews { 
         if subView is UITextField && subView.tag <= 0{ 
          let textField = subView as! UITextField 
          textField.textAlignment = Language.isArabicLanguage ? .right: .left 
         } else if subView is UITextView && subView.tag <= 0{ 
          let textView = subView as! UITextView 
          textView.textAlignment = Language.isArabicLanguage ? .right: .left 
    
         } 
    
         loopThroughSubViewAndAlignTextfieldText(subviews: subView.subviews) 
        } 
        } 
    } 
    
    
    //Align Label Text 
    func loopThroughSubViewAndAlignLabelText(subviews: [UIView]) { 
    if subviews.count > 0 { 
        for subView in subviews { 
         if subView is UILabel && subView.tag <= 0 { 
          let label = subView as! UILabel 
          label.textAlignment = Language.isArabicLanguage ? .right : .left 
         } 
         loopThroughSubViewAndAlignLabelText(subviews: subView.subviews) 
        } 
        } 
        } 
    } 
    
  3. 新しいviewControllerのアロケーションを設定するのに役立つUIViewControllerから継承する新しいクラスLocalizerを作成します。今

    class LocalizerViewController: UIViewController { 
    
        override func viewDidLoad() { 
         super.viewDidLoad() 
    
         self.loopThroughSubViewAndAlignTextfieldText(subviews: self.view.subviews) 
         self.loopThroughSubViewAndAlignLabelText(subviews: self.view.subviews) 
        } 
    } 
    
  4. 、LocalizerViewControllerにすべてのViewControllerを継承:

    class myViewController: LocalizerViewController { 
         override func viewDidLoad() { 
          super.viewDidLoad() 
         } 
    } 
    

それは右またはアプリの言語に応じて、左へのすべてのラベルとテキストフィールドのテキストを揃えます。

関連する問題