2017-12-29 18 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

보십시오 :

class Language { 

    static var isArabicLanguage : Bool { 
    get { 
      return currentAppleLanguage() == "ar" 
    } 
    } 
} 
:

  1. 앱 언어를 확인하려면를

  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() 
         } 
    } 
    

그것은 모든 라벨과 텍스트 필드 오른쪽으로 텍스트 또는 앱 언어에 따라 왼쪽으로 정렬됩니다.

관련 문제