UIStackView
은 수직 레이아웃으로 UIScrollView
안에 있으며 자동 레이아웃을 사용하여 모든 것을 제한합니다. 스크롤 뷰는 수퍼 뷰를 채우고 스택 뷰는 스크롤 뷰를 채우며 스택 뷰에 다양한 요소가 추가됩니다. 이 기능을 자동 레이아웃에서 잘 실행하고 스크롤보기의 내용 크기를 정의하려면 스택보기의 너비도 지정해야합니다. 이것은 스택 뷰에 스크롤 뷰의 폭과 동일한 폭 제약을 추가하여 수행됩니다. 이 시점에서 아무 것도 모호하지 않으며 원하는대로 정확하게 동작합니다.스크롤에서 스택보기 사용하기 안전 영역 인셋보기 및 존중
이제 요소가 화면의 왼쪽 및 오른쪽 가장자리까지 늘어나지 않도록 여백을 추가하려는 경우 스택보기에서 선행 및 후행 제약 조건을 변경하여 양면에 15pt를 삽입 할 수 있습니다 예를 들면. 그러나 등 폭 제약 조건 상수를 반드시 -30으로 변경해야합니다. 스크롤이 가능한 내용을 삽입하면서 화면의 가장 자리를 스 와이프하여 스크롤 할 수 있습니다.
이제 iPhone X가 나타나고 내용이 주택 센서 아래에 있기 때문에 가로 방향으로 15 피트의 여백이 더 이상 충분하지 않습니다. 따라서 안전 영역 레이아웃 여백을 존중하도록 여백을 설정하려면이를 업데이트해야합니다. 당신은 단지 디폴트 마진을 사용하기를 원할뿐입니다. 스택 뷰의 선행 및 후행 제약 조건을 변경하여 뷰의 레이아웃 여백 (안전 영역 인세 트를 고려함)을 사용할 수는 있지만 같은 폭의 제약 조건 상수가 더 이상 여백의 두 배가 아니고 마진이 동적이기 때문에 작동하지 않습니다 지금.
스택 뷰의 앞뒤 및 너비 제약에 대해 IBOutlet
을 생성 한 다음 레이아웃 여백이 변경 될 때 프로그래밍 방식으로 조정합니다 (viewLayoutMarginsDidChange
). 그러나 인터페이스 빌더에서 작동하는 솔루션 인 코드가 더 필요하지 않은 더 좋은 방법이 있는지 궁금합니다.
내 iPhone X 스토리 보드에 대해 "이 제약 조건을 사용하고 다른 하나를 추가하거나이 상수를 변경하는"좋은 방법을 찾지 못했습니다. 올바른 생각을 가지고 있다고 생각합니다. 콘센트를 추가하고 이에 따라 상수를 조정하십시오. 그래도 약간의 buzzkill. – cbowns