사람들이 왜 " 여백이 iOS 8 이전의 어떤 것에 대해서도 명백한 충돌을 일으킬 것이라고 있습니다. "
xib 파일 또는 스토리 보드에서 여백을 기준으로 제약 조건을 설정하면 iOS7에서 앱이 중단 되지 않습니다. 하지 않습니다 당신의 iOS7에 장치에 UI의 차이를 어느만큼 당신이 접촉하지 않는 UIView.layoutMargins
및 UIView.preservesSuperviewLayoutMargins
코드에서 속성을.
iOS8의 여백은 무엇입니까
레이아웃 여백은 내부 주변의 패딩을 나타냅니다. 의 UIView
간격이 뷰와 서브 뷰의 가장자리 사이에 남아 있는지 확인 - 하위 뷰를 배치 할 때 레이아웃 시스템에서 사용할 수있는. 이와 관련하여 CSS의 블록과 관련된 패딩 속성과 매우 유사합니다.
기본적으로, UIView
양쪽에 레이아웃 여백이 8 포인트이며 Interface Builder 에서 변경할 수 없습니다. . 그러나 UIView.layoutMargins
iOS8에서만 사용할 수있는 코드 에서 속성 을 설정하면 이 값을 조정할 수 있습니다.
IB가 여백을 표시하도록 할 수 있습니다. Editor> Canvas> Show Layout Rectangles를 사용 .
여백을 사용하여 뷰와 하위 뷰를 레이아웃 할 수 있습니다. 모든는 UIView
기본적으로 마진와 함께,하지만 당신은 여백과 관련된 제약 조건을 설정할 때 그들은 단지보기 배치에 영향을 미칩니다.
여백을 사용하는 방법
Interface Builder에서 여백을 사용하는 유일한 방법은 제약 조건을 구성하는 동안 여백에 상대적 옵션 을 확인하는 것 입니다. 이것은 뷰를 배치 할 때 가장자리 대신 여백 을 사용 하도록 제약 조건을 지시하는 방법 입니다.
뷰와 서브 뷰 사이에 주요 제약 조건을 설정하는 네 가지 방법을 살펴 보겠습니다. 각 제약 조건에 대해 설명 된 첫 번째 연관은 서브 뷰의 선행 이며 두 번째는 슈퍼 뷰의 주요 입니다. 주의해야 할 것은 각 구속 조건 끝의 여백에 상대적 옵션의 체크 및 체크 해제 상태입니다. 이는 구속 조건이 뷰의 여백 또는 가장자리에 연결되어 있는지를 정의하기 때문입니다.
- 첫 번째 항목 (체크 해제), 두 번째 항목 (체크) :이 경우 하위 뷰의 왼쪽 가장자리가 슈퍼 뷰의 왼쪽 여백에 정렬되어야한다고 선언합니다 (그림 참조).
- 첫 번째 항목 (확인 취소), 두 번째 항목 (확인 취소) : 모두 margin가 아닌 edge를 사용 합니다. 이 경우, 서브 뷰의 왼쪽 가장자리는 슈퍼 뷰의 왼쪽 가장자리와 정렬되어야합니다.
- 첫 번째 항목 (확인), 두 번째 항목 (확인 취소) :이 경우 하위보기의 왼쪽 여백이 수퍼 뷰의 왼쪽 가장자리에 맞춰져야한다고 선언합니다. 이런 종류의 레이아웃은 실제로 서브 뷰가 슈퍼 뷰와 겹치게합니다.
- 첫 번째 항목 (확인), 두 번째 항목 (확인). 서브 뷰와 수퍼 뷰 모두 동일한 기본 마진을 가지므로 실제로 사례 2와 동일한 효과를 갖습니다. 우리는 서브 뷰의 왼쪽 여백이 슈퍼 뷰의 왼쪽 여백에 맞춰져야한다고 선언하고 있습니다.
여백에 대한 좋은 점
이 새로운 기능 (iOS8)은 여백을 사용하기로 결정한 경우에만 UI 개발에 영향을줍니다.
여백을 사용하면 단일 속성 값을 변경하여 공유 슈퍼 뷰와 공통 관계를 공유하는 여러 서브 뷰의 배치를 조정할 수 있습니다. 각 값을 하나씩 변경하는 대신 모든 간격을 업데이트해야하는 경우 한 줄의 이 같은 코드 :
self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);
이 이점을 설명하기 위해 다음과 같은 경우 모든 하위 뷰의 왼쪽 가장자리가 슈퍼 뷰의 왼쪽 여백에 맞춰집니다. 따라서 superview의 왼쪽 여백을 변경하면 모든 하위보기에 동시에 영향을 미칩니다.