2016-09-13 1 views
0

영어와 아랍어라는 두 가지 언어가 있습니다.다국어에 따른 UI 처리 Out of Out Autolayouts

선택한 언어에 따라 UI를 변경하는 방법 자동 레이아웃 사용 안함? 예를 들어

:

  • 사용자가 우리가 텍스트를 왼쪽에서 오른쪽으로 표시해야 English 선택합니다.
  • 사용자가 Arabic을 선택하면 오른쪽에서 왼쪽으로 텍스트를 표시해야합니다.

표시 규칙은 Tableviews, 레이블, 버튼, 이미지, 컬렉션 뷰, 뷰, 텍스트 필드 등을 포함 ...

답변

0

앱 작업 ​​할 때 고려해야 할 시나리오의 많은이있는 아랍어 앱의 UI가 바뀌고 있습니다. 코드 다음에 사용했습니다. 이것은 완벽하게 작동합니다. scrollView 및 UITableView에 대해 올바르게 처리해야합니다. 푸시하는 동안 UI가 적절하고 뷰 컨트롤러에서 팝업으로 인지 확인해야합니다.

- (void)reloadUI { 

    if (languageIsChanged == YES) { 

    [self reloadRTLView:self.view]; 
    } 
} 


    - (void)reloadRTLView:(UIView *)view { 

    [self changeViewRTL:view]; 
    for (UIView *tempView in view.subviews) { 

     [self reloadRTLView:tempView]; 
    } 
} 

- (void)changeViewRTL:(UIView*)tempView { 

    for (NSLayoutConstraint *constrain in tempView.constraints) { 

     NSLayoutAttribute firstAttribute = constrain.firstAttribute; 
     NSLayoutAttribute secondAttribute = constrain.secondAttribute; 

     if ((firstAttribute == NSLayoutAttributeLeading || firstAttribute == NSLayoutAttributeTrailing) && (secondAttribute == NSLayoutAttributeLeading || secondAttribute == NSLayoutAttributeTrailing)) { 

      if (firstAttribute == NSLayoutAttributeLeading) { 
       firstAttribute = NSLayoutAttributeTrailing; 
      } else if (firstAttribute == NSLayoutAttributeTrailing) { 
       firstAttribute = NSLayoutAttributeLeading; 
      } 

      if (secondAttribute == NSLayoutAttributeLeading) { 
       secondAttribute = NSLayoutAttributeTrailing; 
      } else if (secondAttribute == NSLayoutAttributeTrailing) { 
       secondAttribute = NSLayoutAttributeLeading; 
      } 

      constrain.constant *= -1; 
      NSLayoutConstraint *constrainNew = [NSLayoutConstraint constraintWithItem:constrain.firstItem attribute:firstAttribute relatedBy:constrain.relation toItem:constrain.secondItem attribute:secondAttribute multiplier:constrain.multiplier constant:constrain.constant]; 
      [tempView removeConstraint:constrain]; 
      [tempView addConstraint:constrainNew]; 
     } 
    } 
} 

투표까지하는 경우이 당신을 도울.