그리드의 셀을 표시하는 콜렉션 뷰가 필요합니다. 따라서 표준 흐름 레이아웃은 저에게 좋습니다. 그러나 셀 높이가 셀에 놓인 자동 레이아웃 제약 조건에 따라 결정되어야하는 반면 행 당 표시 할 셀의 수는 알려야합니다. 여기 내 셀 레이아웃입니다 :autolayout에 의해서만 UICollectionView 셀 높이를 결정하십시오.
그것은 매우 간단합니다 - 이미지보기와 그 아래 두 개의 레이블. 이제 이미지보기에는 종횡비 제약 조건 (1 : 1)이 있습니다. 즉, 너비가 셀에 알려져있을 때마다 높이가 자동 레이아웃 규칙에 의해 자동으로 인식되어야합니다 (celltop-image-label1 -label2-cellbottom). '
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let availableWidth = collectionView.frame.width - padding
let widthPerItem = availableWidth/itemsPerRow
return CGSize(width: widthPerItem, height: widthPerItem)
}
당신이 볼 수 있듯이, 내가 돈 때문에 : 나는 행당 2 개 항목을 표시 컬렉션보기를 알려줄 수있는 다른 좋은 방법을 알고하지 않기 때문에 지금
, 나는 UICollectionViewDelegateFlowLayout
방법을 재정의 아이템 높이를 알지 못한다. 너비와 같은 것을 반환한다. autolayout이 나중에 그것을 고치기를 희망한다. 또한 전체 메커니즘이 작동하기 시작하기 위해 estimatedItemSize
을 설정했습니다.
결과는 매우 이상한 - 주로 라벨 길이에 따라되지 이벤트가 계정에 내가 거기에 돌아 폭을 않는 콜렉션 뷰처럼 보인다 : 나는 다른 보았다
사람들은 너비에 대한 셀 크기를 수동으로 계산할 것을 권장합니다. 예를 들어 "레이아웃을 직접 말하고 너 자신을 측정 한 다음이 너비에 맞는 크기를 지정하십시오."라고 대답하고 심지어 자동 레이아웃 규칙을 실행하지만 수동으로 크기를 어지럽히 지 않고이 작업을 수행 할 수있는 방법이 있는지 확인하십시오.
나는 모든 것이 autolayout에 의해 처리되기를 원했고, 하드 코드 된 높이는 다른 화면 크기에 따라 실제 높이가 다르기 때문에 더 이상 작동하지 않을 것입니다. – frangulyan