2015-01-23 4 views
1

기본보기에 하위보기로 UIView를 추가 한 xib가 있습니다. 이 하위보기가 기본보기에 비례하는 높이가되기를 바랍니다. 그러나 그것을 할 수있는 '평등 높이'옵션은 없습니다. 스토리 보드에서 뷰 컨트롤러를 사용했다면이 작업을 수행 할 수 있었을 것입니다. iOS 자동 레이아웃 - xib의 동일 높이 제약

enter image description here

그래서 서브 뷰의 높이가 슈퍼 뷰의 높이의 비율 제약 달성하는 방법 (말 3 : 4).

+0

상단 공간 및 하단 공간 제약 조건을 설정하고 비율이 좋을 때까지 값을 조정하십시오. – Cesare

+0

나는 그것을 할 수 있었다. 그러나 화면 크기는 iPhone마다 다릅니다. 비율을 설정하는 것이 완벽한 방법이었을 것입니다. – OutOnAWeekend

+0

화면 크기는 iPhone 모델마다 다릅니다. 옳은. 그러나 올바른 제약 조건을 설정하면 UIView도 변경됩니다. 그리고 그것은 모든 장치에서 다르게 보일 것입니다. – Cesare

답변

0

이 경우 프로그래밍 방식으로 만 수행 할 수 있다고 생각합니다.

- (void)viewDidLayoutSubviews { 
    self.scannedDetailsCardHeightConstraint.constant = self.view.frame.size.height*(0.4);  
    [self.view layoutSubviews];} 
+0

그냥 답을 프로그램으로 표시하는 것이 훨씬 더 나은 것처럼 표시합니다. – OutOnAWeekend

1

당신이 할 수 없다는 것이 이상하게 보입니다. 해결 방법이 있습니다.

  1. 최상위 수준보기에보기를 추가하십시오.
  2. 위쪽, 왼쪽, 오른쪽 및 아래쪽을 최상위보기의 위쪽, 왼쪽, 오른쪽 및 아래쪽에 고정하십시오. 모든 오프셋을 0으로 만드십시오.
  3. 이제 뷰에이 뷰를 추가하고 예상대로 Equal Height 및 Equal Width 제약 조건을 사용할 수 있습니다.

enter image description here

+0

그래서 그냥 다른 최상위보기를 추가해야합니까? 다른 견해는 '문서 개요'에 추가로 많은 제약이 될 것입니다. 프로그래밍 방식으로하면 훨씬 간단 해 보입니다. – OutOnAWeekend

+0

단지 4 개의 추가 제약. 나쁘지는 않지만 선택의 여지가 있습니다. – vacawama

+0

설정 한 후 최상위 레벨보기를 무시하고 두 번째보기에서 모든 것을 배치합니다. – vacawama

0

사실이 사항을 충족하기 위해 XIB 파일을 수정할 수 있습니다.

subview.left와 superview.left 사이에 공간 제약 조건을 만듭니다. Tnc-ek-Ibw이 서브 뷰의 식별자이며, iN0-l3-epB는 슈퍼 뷰의입니다

<constraint firstItem="Tnc-ek-Ibw" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="1Go-h7-fVl"/> 

같은 국지적 인 코드가 될 것입니다 XIB를 저장하고 숭고한 (또는 다른 편집기)에서 엽니 다. (1Go-h7-fVl이 제약 조건의 식별자, 그것을 무시합니다.)

친숙한가요? 예. 스토리 보드에서 "높이 같음"을 설정 한 경우 스토리 보드의 코드가 매우 유사합니다. 유일한 차이는 attribute입니다. 이제 attribute을 모두 leading에서 width으로 수정하십시오. 이제 코드는 다음과 같습니다.

<constraint firstItem="Tnc-ek-Ibw" firstAttribute="width" secondItem="iN0-l3-epB" secondAttribute="width" id="1Go-h7-fVl"/> 

저장 한 다음 Xcode에서 다시 엽니 다. 그것은 작동합니다!

Xcode에서이 작업을 수행 할 수없는 이유를 모르겠습니다. 아마도 버그 일 수 있습니다. 확실하지 않습니다.

이 기술은 문서화되지 않았습니다. 어쨌든 작동합니다.

관련 문제