스 패커 없어요!
원래 답변의 의견 섹션에있는 제안, 특히 @Rivera의 유용한 제안을 바탕으로 원래 답변을 단순화했습니다.
나는 이것이 얼마나 간단한지를 설명하기 위해 gif를 사용하고 있습니다. gif가 도움이 되길 바랍니다. GIF에 문제가있는 경우 아래의 기존 답변을 일반 스크린 샷과 함께 포함했습니다.
명령:
1) 버튼이나 라벨을 추가하십시오. 3 개의 버튼을 사용하고 있습니다.
2) 각 버튼의 중심 x 구속 조건을 수퍼 뷰에 추가하십시오.
3) 각 버튼에서 하단 레이아웃 제약 조건으로 제약 조건을 추가하십시오.
4) 위의 # 3에 추가 된 구속 조건을 다음과 같이 조정하십시오.
a) 제약 조건을 선택합니다.
b) 상수를 제거하고 (0으로 설정)
c) 승수를 다음과 같이 변경합니다. 버튼 수 + 1을 취하고 맨 위에서 시작하여 승수를 buttonCountPlus1 : 1 로 설정 한 다음 buttonCountPlus1을 설정합니다. : 2 , 마지막으로 buttonCountPlus1 : 3 입니다. (관심이 있다면 아래의 이전 답변 에서이 수식을 어디서 얻었는지 설명합니다).
5) 여기 데모가 있습니다!
참고 : 버튼의 높이가 더 크면 구속 조건이 버튼의 맨 아래부터 있으므로 상수 값으로이를 보정해야합니다.
기존 답변
Apple의 문서와 Erica Sadun의 훌륭한 책 ( Auto Layout Demystified )이 말한 내용에도 불구하고 , 스페이서 없이 공간을 균일하게 볼 수 있습니다 . 이것은 IB와 코드에서 간격을두고 원하는 수의 요소에 대해 매우 간단합니다. "섹션 수식"이라는 수학 수식 만 있으면됩니다. 설명하는 것보다 수행하는 것이 더 간단합니다. IB에서 시연하여 최선을 다할 것이지만 코드에서도 쉽게 할 수 있습니다.
문제의 예에서, 당신은
1) 각 레이블을 중심 구속 조건으로 설정하여 시작하십시오. 이것은 매우 간단합니다. 각 레이블에서 아래쪽으로 드래그를 제어하십시오.
2) 우리가 사용할 다른 제한 조건, 즉 "하단 공간-하단 레이아웃 가이드"를 추가 할 수 있으므로 Shift 키를 누르고 있으십시오.
3) "하단 레이아웃 가이드-하단 레이아웃 가이드"와 "컨테이너의 수평 중앙"을 선택하십시오. 3 개 레이블 모두에 대해이 작업을 수행하십시오.
기본적으로 좌표를 결정하고 총 레이블 수에 1을 더한 레이블로 나누면 동적 위치를 얻기 위해 IB에 추가 할 수있는 숫자가 있습니다. 수식을 단순화하고 있지만 수평 간격 또는 수직 및 수평을 동시에 설정하는 데 사용할 수 있습니다. 매우 강력합니다!
여기에 우리의 승수가 있습니다.
라벨 1 = 1/4 = .25,
라벨 2 = 2/4 = .5,
라벨 3 = 3/4 = .75
(편집 : @Rivera는 승수 필드에서 직접 비율을 직접 사용할 수 있으며 xCode를 사용하여 수학을 수행 할 수 있다고 언급했습니다!)
4) 이제 Label1을 선택하고 하단 제약 조건을 선택하겠습니다. 이처럼 :
5) 속성 관리자에서 "두 번째 항목"을 선택하십시오.
6) 드롭 다운에서 "Reverse first and second item"을 선택하십시오.
7) 상수와 wC hAny 값을 제로화합니다. 필요한 경우 여기에 오프셋을 추가 할 수 있습니다.
8) 이것은 중요한 부분입니다. 승수 필드에서 첫 번째 승수 0.25를 추가하십시오.
9) 사용자가 라벨의 y 중심에 가운데를 맞추기 위해 상단의 "첫 번째 항목"을 "CenterY"로 설정하십시오. 다음은 그 모든 모습을 보여줍니다.
10) 각 레이블에 대해이 과정을 반복하고 관련 승수를 연결하십시오 (Label2의 경우 0.5, Label3의 경우 0.75). 모든 소형 장치를 갖춘 모든 방향의 최종 제품입니다! 매우 간단합니다. 나는 많은 양의 코드와 스페이서와 관련된 많은 솔루션을 찾고 있습니다. 이것은 내가이 문제에서 본 최고의 솔루션입니다.
업데이트 : @kraftydevil는 Bottom Layout Guide가 xibs가 아닌 스토리 보드에만 나타납니다. xibs에서 '컨테이너에 하단 공간'을 사용하십시오. 잘 잡아!