3 행과 2 열로 배치해야하는 6 개의 요소가있는 컬렉션 뷰가 있습니다. 있는 viewDidLoad에서스위프트 : 컬렉션보기 크기가 올바르게 변경되지 않습니다.
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let totalWidth = collectionView.bounds.size.width - 12
let totalHeight = collectionView.bounds.size.height - 18
let heightOfView = (totalHeight/3)
let dimensions = CGFloat(Int(totalWidth))
return CGSize(width: dimensions/2, height: heightOfView)
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 6
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsetsMake(0, 5, 0, 5)
}
:이 완벽있는 다음과 같습니다 Collection 뷰를 생성
override func viewDidLoad() {
super.viewDidLoad()
collectionView.dataSource = self
collectionView.delegate = self
flowLayout.scrollDirection = .horizontal
flowLayout.minimumLineSpacing = 5
flowLayout.minimumInteritemSpacing = 5
: 나는 이것을 달성하기 위해 다음 코드를 사용
그러나 때 뷰가로드되기 전에 상황에 따라 컬렉션 뷰 아래의 뷰를 숨기고 크기를 조정합니다 (높이가 50pt 높이). 그러면 o 상황에 의해 viewWillAppear의보기를 숨길
Collection view appearance when adjusted to account for hidden view
: 오직 2 행 대신에 3 행 사이에 큰 간극 스크롤 않는 화면 오프 세포 (이미지 참조) 다음 4 & 5 변경 utput testVariable 사실이며,이 경우 bottomView을 숨기고 공간을 채우기 위해 collectionView 50 점 더 큰 만드는 경우
override func viewWillAppear(_ animated: Bool) {
if testVariable == true {
bottomView.isHidden = true
// make bottomView height = 0
bottomViewHeight.constant = 0
// make collectionView space to the bottom of the view controller 0
collectionToBase.constant = 0
view.layoutIfNeeded()
}
}
이 코드 테스트 : 나는 다음을 추가했습니다. 나는이 코드를 viewWillAppear에 추가했다. 희망은 collectionViewLayout이 추가로 50pt의 높이를 고려하여 조정하지만 희망은 없다.
다음으로 시도하십시오. 높이가 작은 셀 만들기. –