내 앱에서보기 컨트롤러를 모달로 표시하고이보기 컨트롤러에 수퍼 뷰를 채우는 UICollectionView
이 포함되어 있습니다. 콜렉션 뷰의 각 셀은 뷰의 경계와 동일한 크기의 전체 화면이어야합니다. 이를 달성하기 위해 간단히 UICollectionViewFlowLayout
의 itemSize
을보기의 바운드 크기 (viewDidLayoutSubviews
)로 설정합니다.프리젠 테이션의 iPhone X에서 전체 화면 UICollectionViewCell 문제
이것은 풍경의 iPhone X를 제외한 모든 기기 및 방향에서 정말 잘 작동합니다. 이 경우 화면을 표시 할 때 안전 영역 레이아웃 여백이 나타나서 셀의 위치에 영향을주는 것으로 보입니다. 셀이 디스플레이의 왼쪽 가장자리에서 밀려 올라가고 셀의 아래쪽이 홈 인디케이터의 수직 중앙에 정렬되도록 밀어 올립니다. 뷰 디버거를 사용하여 레이아웃을 검사하면 컬렉션 뷰가 화면을 채우지 만 콜렉션 뷰의 맨 앞에서 삽입되어 있더라도 셀의 Y 위치는 -10.67이고 X 위치는 0입니다. 특히, 콘솔에 기록됩니다.
The behavior of the UICollectionViewFlowLayout is not defined because:
the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.
The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x7fa6311253b0>, and it is attached to <UICollectionView: 0x7fa63207e800; frame = (0 0; 812 375); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x608000244d70>; layer = <CALayer: 0x60800023ef00>; contentOffset: {-44, 0}; contentSize: {0, 812}; adjustedContentInset: {0, 44, 21, 44}> collection view layout: <UICollectionViewFlowLayout: 0x7fa6311253b0>.
여기에 무슨 일이 일어나고 있으며 어떻게 해결 될 수 있습니까?
그냥 궁금해서, 왜'collectionView의 내부 itemSize를 설정하지 (: 레이아웃 : sizeForItemAt : _)'대신'viewDidLayoutSubviews'의? – damiancesar
또한 itemSize를 처음 언급 한대로 설정하면'view.bounds'와는 반대로 width와 height에'view.frame'을 사용해야합니다. – damiancesar