2014-10-28 5 views
2

Xcode 6s 자동 레이아웃 인터페이스를 사용하는 UITextField에는 너비가 400 포인트로 설정되어 있습니다. 큰 화면 장치에서는 잘 보이지만 iPhone 5에서는이 상자가 포함 된보기에서 사라집니다. 이것을 접근하는 올바른 방법은 무엇입니까?Xcode 6 자동 레이아웃 유연한 너비

화면이 이보다 큰 경우 UITextFields 너비가 400 포인트가되도록 제약 조건을 설정하거나보기 외부에 오버플로가 아닌 컨테이너보기를 채우거나 크기를 사용해야합니까? 클래스를 사용하여 UITextField를 컴팩트보기의 부모보기와 동일한 너비로 설정합니다.

답변

2

UITextField에 너비 제약 조건을 설정하는 대신 가로 공간 제약 조건을 왼쪽과 오른쪽에 추가하십시오. 그렇게하면 UITextField가 자동으로 화면 크기가 조정됩니다.

+0

내가 가진 유일한 문제는 iPad와 같은 대형 화면 장치의 경우 텍스트보기가 전체 화면을 차지하는 것을 원하지 않기 때문입니다. –

+0

사과로 권장되는 접근 방식은 아이폰과 ipad에 대한 서로 다른 스토리 보드/xibs를 갖는 것입니다. 코드는 완전히 공유됩니다. –

+0

@KrisJurgowski Apple이 크기 클래스마다 다른 구현을 사용하여 Storyboard 파일을 결합하도록 우리를 밀고 싶어하는 것처럼 보입니다. 나는 아직 도구/접근법에 신경 쓰지는 않지만 미래의 물결처럼 보인다. 그러나 그들이 기기/화면을 차별화하기 쉽도록하기를 바랍니다. 현재 아이폰과 아이 패드를 차별화하는 것은 쉽지만 아이폰 4S와 아이폰 6 플러스를 차별화하는 것은 (적어도 인물 모드에서는) 혼란 스럽다. 지금 당장은 스토리 보드 (Storyboards)에 대해 별도로 말씀 드리고자 합니다만, 그렇게 오래지지 않을 것이라고 생각합니다. – mbm29414

0

Kris가 말했듯이 Horizontal Space 제약 조건을 설정하는 것이이 문제를 시작하는 좋은 방법입니다. 상수 "여백"싶지 않다에 대한 의견에 대한 응답으로

, 당신은 다음과 같은 작업을 수행 할 수

  1. 설정 수평 공간의 제약을 인터페이스 빌더에.
  2. 클래스에 NSLayoutConstraint 유형의 IBOutlet을 만듭니다 (.h 또는 .m 중 하나는 중요하지 않음).
  3. IBOutlet을 각각 NSLayoutConstraint에 연결하십시오.
  4. 뷰 수명주기 방법 중 하나 (viewDidLoad/viewWillAppear:)에서 원하는 값으로 제약 조건을 설정하십시오.

그것은 당신이 주로 iPad에서 전체 화면에 걸쳐에서 필드를 방지하려면 같은 소리, 그래서 당신은 (가정 같은 것을 할 수 NSLayoutConstraint들이라는 UITextField "를"textFieldLeft "과"textFieldRight "이름이 지정됩니다 textboard ") :

- (void)viewDidLoad { 
    if (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad) { 
     self.textFieldLeft.constant = 50.0f; 
     self.textFieldRight.constant = 50.0f; 
     [self.textField layoutIfNeeded]; 
    } 
} 
관련 문제