2016-10-06 4 views
1

Xcode 인터페이스 작성기에 문제가 있습니다. 하나의보기 컨트롤러에 View Controller의 루트보기에 가장자리가있는 UICollectionView가있는 스토리 보드가 있습니다. 루트보기에는 UICollectionView의 선행 및 후행 공백에 대한 -16 및 -16의 Descendant 제약 조건이 있습니다.XCode8 : UICollectionView 가장자리 - 가장자리, 한 특성 변형 (크기 클래스)의 제약 조건 편집으로 다른 특성 변형이 깨졌습니다.

다른 크기 클래스 (또는 특성 변형이 호출 됨)로 전환하면 선행 및 후행 여백이 -20, -20이됩니다. 가장자리에서 가장자리로 조정하면 다른 특성 변형이 각면에 4 픽셀 씩 삽입됩니다. 따라서 하나의 변형에서 제약 조건을 편집하면 다른 변형이 뒤틀어 지므로 모든 내부 계산 논리가 셀에 대해 해제됩니다.

그래서 동시에 여러 특성 변형의 제약 조건을 동시에 만족시킬 수 없으며 내 UICollectionView를 주변에 패딩하지 않고 가장자리에서 가장자리로만 가질 수 있습니다.

모든 제약 조건을 다시 시도했습니다. 같은 문제.

스토리 보드 자체에서 특성 변형을 사용하지 않도록 설정했습니다. 같은 문제.

편집 : 또한 "중개보기"(또한 edge-to-edge)를 추가하고 그 안에 내 UICollectionView를 넣으려고했습니다. 차이는 없습니다.

부정적인 삽입량은 각 장치 요소마다 달라야한다는 것을 알게되었습니다. 일부에서는 -16-16, 일부에서는 -20, -20, iPad에서는 -8, -8입니다. 그래서 이들은 정적 값이므로, 어떻게하면 런타임에 프로그래밍 방식으로 제약 조건을 다루지 않고 안정적으로 가장자리에 scrollview 가장자리를 삽입 할 수 있습니까?

하나의 기기 화면 크기를 수정할 수는 있지만 다른 화면 크기는 깨질 수 있습니다.

또한 실제로 크기 클래스를 사용하고 싶지 않지만 크기 클래스를 해제하더라도 한 곳에서 제약 조건을 편집 할 때 하나의 통합보기를 얻지 못합니다. 그래서 이것은 6 번해야 할 일을 효과적으로 배가시킵니다. 이것은 저에게 이미 우스꽝스러운 시간을 요구하고 있습니다.

제안 사항?

답변

2

저렴하고 쉬운 해결책을 찾았습니다. 내 문제는 다음과 같습니다. 내 앞과 뒤의 제약은 수퍼 뷰가 아니라 마진에 대한 것이 었습니다. 여백은 크기 클래스에 따라 다릅니다. 그래서 필자는 2 가지 제약 조건을 수정했습니다 : 선행 및 후행, 각각에 대해 "여백 대비"옵션을 비활성화하십시오. 지침은 여기 : UIViewController Nested View To Screen Edge

이제 모든 화면 크기에서 일관된 동작을 얻습니다 (컬렉션보기에서 여백 없음).