저는 매월 UITableView 셀에 포함 된 UICollectionView 인 앱용 캘린더를 만들고 있습니다. TableView는 화면의 안전 영역에 고정되어 있으므로 선행 및 후행 제약은 화면의 왼쪽 및 오른쪽 가장자리에서 16입니다. UICollectionView가 테이블 셀의 ContentView에 고정되어 있습니다.UICollectionView가 항목 크기를 제공하지 못했습니다.
CollectionView 내의 항목과 항목 사이의 간격과 섹션 삽입은 모두 0으로 설정됩니다. 따라서 연속으로 7 일을 얻으려면 itemWidth = tableView.frame.width/7
을 사용합니다. 그런 다음 sizeForItem()
메서드에서 DelegateFlowLayout
프로토콜의이 값을 너비와 높이로 설정합니다.
실행시 모든 값이 올바르게 계산됩니다. 예를 들어 iPhone 8 화면에서 tableWidth는 343, itemWidth는 49, itemSize는 (49, 49)입니다.
을 그리고 이것은 아이폰 SE 결과입니다 :하지만 화면에는 다음과 같습니다
내가 프로그래밍 간격 레이아웃을 설정했지만, 그것은 도움이되지 않습니다. 누구나 내가 어리 석고 어디에 7 개의 동등한 조각이 화면에서 8 또는 6으로 바뀌고 있는지 설명 할 수 있습니까?
업데이트. ViewController의 기본보기에서 너비를 계산하려고했습니다 : itemWidth = (view.frame.width-32)/7
(32는 안전 영역 인세 트 합계 - 2 * 16). 여전히 간격이 0 인 경우 8 또는 8plus와 같은 더 큰 화면에서이 문제가 해결되었지만 SE는 주당 6 일간 계속 표시되며 항목 간 간격을 강제로 지정합니다. 이 시점에서 나는 레이아웃 로직에 대해 전혀 이해하지 못했다!
'tableView.frame.width' 대신'collectionView.frame.width'를 사용해보십시오. 또한 항목과 행 사이의 간격이 0이라고 말하면'minimumLineSpacingForSectionAt' 및'minimumInteritemSpacingForSectionAt' 메서드에서 0을 반환합니까? – kbunarjo
예, 간격은 IB와 해당 방법을 사용하는 코드에서 모두 설정됩니다. 난 collectionView 너비 - 같은 결과를 사용하여 시도했다. –
컬렉션보기의 항목 크기를 가져온 후 테이블보기/컬렉션보기의 너비가 변경된 것 같습니다. 그걸 확인할 수 있니? 그렇지 않으면 코드가 작동합니다. – torap