programing

Xcode 6의 Storyboard의 "마진 제한"이란 무엇입니까?

stoneblock 2023. 4. 14. 21:06

Xcode 6의 Storyboard의 "마진 제한"이란 무엇입니까?

중 자동레이아웃이 했습니다.Constrain to marginsXcode 5는 Xcode 5입니다.

★★★★★★★★★★★★★★★★★★를 추가했습니다.UITableView되어 제약이

Xcode 6 테이블 뷰가 뷰와 동일한 프레임을 가지고 있어도 Xcode가 제약조건으로 -16을 추가하는 것을 제안하는 반면 Xcode 5는 공백 0을 추가하는 것을 제안합니다.

여백에 구속을 선택한 경우

"여백에 구속" 옵션을 선택 해제하면 Xcode 5와 동일하게 동작하며 제약조건으로 0을 추가하는 것이 좋습니다.

선택되지 않은 마진 제한 사용

또한 Restraint를 체크 마진에 추가하면 스토리보드 파일을 Xcode 5로 열 수 없게 되므로 Xcode 6에서는 확실히 새로운 것입니다.

제 질문을 제대로 설명할 수 있기를 바랍니다.실제로 '여유에 대한 구속'이 무엇을 하고, 언제 그것을 사용해야 하는지, 사용해서는 안 되는지를 이해하고 싶다.아주 단순하고 뻔한 일이라면 사과드립니다.

편집

여기서 논의한 결과, 레이아웃 마진에 대해 알게 되었습니다만, 이것과 관계가 있는 것일까요.

왜 사람들이 "Margins가 iOS 8보다 이전이라면 어떤 것이든 완전히 충돌할 것"이라고 불평하는지 전혀 이해할 수 없다.

xib 파일 또는 스토리보드의 여백에 대해 제한을 설정해도 iOS7에서 앱이 크래쉬하지 않으며 iOS7 디바이스에서도 UI에 영향을 주지 않습니다.UIView.layoutMargins ★★★★★★★★★★★★★★★★★」UIView.preservesSuperviewLayoutMargins속성을 지정합니다.

iOS8의 마진이란?

레이아웃 여백은 내부 주변의 패딩을 나타냅니다.UIView레이아웃 시스템이 하위 뷰를 배치할 때 사용할 수 있는 - 뷰의 가장자리와 하위 뷰 사이에 간격이 있는지 확인합니다.합니다.

여기에 이미지 설명 입력

" " " 입니다.UIView는 각 면에 8개의 레이아웃 여백을 가지고 있으며 인터페이스 빌더에서는 변경할 수 없습니다.단, 를 설정함으로써UIView.layoutMarginsiOS8에서만 사용할 수 있는 코드의 속성을 사용하여 이러한 값을 조정할 수 있습니다.

[ Editor ]> [ Canvas ]> [ Show Layout 직사각형]를 사용하여 IB에 여백을 표시할 수 있습니다. 여기에 이미지 설명 입력

뷰와 하위 뷰와 하위 뷰의 레이아웃을 위해 사용할 수 있습니다.여백을 사용하여 보기 및 하위 보기를 레이아웃할 수 있습니다.모 모든 든UIView기본적으로 여백과 관련된 제약 조건을 설정할 때에만 영향을 미칠 수 있습니다.기본적으로 여백과 함께 제공되지만 여백과 관련된 구속조건을 설정할 때만 뷰 배치에 영향을 미칩니다.

여백 사용법

Interface Builder에서 마진을 사용하는 유일한 방법은 제약조건을 설정할 때 [Relative to margin]옵션을 켜는 것입니다.이렇게 하면 내 뷰를 배치할 때 모서리 대신 여백을 사용하도록 제약 조건을 지정할 수 있습니다.

여기에 이미지 설명 입력

뷰와 서브뷰 사이에 선행 제약 조건을 설정하는 4가지 방법을 살펴보겠습니다.각 제약조건에 대해 설명한 첫 번째 연관성은 서브뷰의 선두가 되고번째 연관성은 슈퍼뷰의 선두가 됩니다. 제약조건 끝의 Relative to margin 옵션의 체크 및 체크오프 상태가 주의합니다.이것은 제약조건이 뷰의 여백과 가장자리에 연결되어 있는지 여부를 정의하기 때문입니다.

  1. 첫 번째 항목(체크 해제), 두 번째 항목(체크):이 경우 서브뷰의 왼쪽 가장자리가 슈퍼뷰의 왼쪽 여백(이 이미지 참조)과 일치해야 합니다.

여기에 이미지 설명 입력

  1. 첫 번째 항목(체크 해제), 두 번째 항목(체크 해제):둘 다 여백이 아닌 모서리를 사용합니다.이 경우 서브뷰의 왼쪽 가장자리가 슈퍼뷰의 왼쪽 가장자리와 일치해야 한다고 선언합니다.

여기에 이미지 설명 입력

  1. 첫 번째 항목(체크), 두 번째 항목(체크 해제):이 경우 서브뷰의 왼쪽 여백이 슈퍼뷰의 왼쪽 모서리와 일치해야 한다고 선언합니다.이러한 레이아웃은 실제로 서브뷰가 슈퍼뷰와 겹치게 합니다.

여기에 이미지 설명 입력

  1. 첫 번째 항목(체크), 두 번째 항목(체크)입니다.서브뷰와 슈퍼뷰의 디폴트 마진이 같기 때문에 실제로는 케이스2와 같은 효과가 있습니다.서브뷰의 왼쪽 여백이 슈퍼뷰의 왼쪽 여백과 일치해야 함을 선언합니다.

여기에 이미지 설명 입력

마진의 장점

이 새로운 기능(iOS8)은 마진을 사용하기로 결정한 경우에만 UI 개발에 영향을 미칩니다.

여백을 사용하면 단일 특성 값을 변경하여 공유 수퍼뷰와 공통 관계를 공유하는 여러 하위뷰의 배치를 조정할 수 있습니다.이것은 모든 관련 제약 조건을 고정값으로 설정하는 것에 대한 확실한 이점입니다. 왜냐하면 모든 간격을 업데이트해야 할 경우 각 값을 하나씩 변경하는 것이 아니라 다음과 같은 코드 한 줄로 슈퍼뷰의 여백을 업데이트하여 모든 관련 배치를 동시에 변경할 수 있기 때문입니다.

self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);

이 장점을 설명하기 위해 다음 경우 모든 하위 뷰의 왼쪽 가장자리가 해당 슈퍼 뷰의 왼쪽 여백에 정렬됩니다.따라서 슈퍼뷰의 왼쪽 여백을 변경하면 모든 서브뷰에 동시에 영향을 미칩니다.

여기에 이미지 설명 입력

iOS 8에서는 이제 슈퍼뷰의 경계 자체 대신 슈퍼뷰의 경계에 대한 사전 정의된 여백에 상대적인 구속조건을 정의할 수 있는 옵션이 있습니다.네, 문서에서 지적한 레이아웃 여백과 완전히 관련이 있습니다.한 가지 장점은 마진을 동적으로 재정의하거나 디바이스 종류에 따라 다르게 재정의할 수 있다는 것입니다.그러면 제약조건을 변경하지 않고 레이아웃이 갱신됩니다.

사용 시기: 이 새로운 유연성을 활용하고 싶을 때.

사용하지 않는 경우: iOS 7 이하에서 실행하는 것을 목표로 하는 앱입니다.

미국에서 재산은 다음과 같습니다.layoutMarginsApple Docs 를 참조해 주세요.기본적으로 레이아웃 여백이 8,8,8(기본값)인 경우 컨테이너 여백이 0인 구속조건의 x 위치는 8입니다.이 기능은 iOS8 이상에서만 사용할 수 있습니다.

제약이 용기 여유로 가는 것을 원치 않는 모든 사용자:

구속조건 작성 팝업을 표시하려면 CTRL+클릭+드래그를 누릅니다.

메뉴에 기본적으로 여백에 대한 구속조건을 작성하도록 표시된 경우 옵션/alt를 누르고 컨테이너 여백이 아닌 컨테이너에 구속조건을 설정할 수 있습니다.

이제 여백에 제약조건을 작성하지 않는 옵션이 표시됩니다.이게 제 사용법으로는 더 빠릅니다.

언급URL : https://stackoverflow.com/questions/25807545/what-is-constrain-to-margin-in-storyboard-in-xcode-6