私は(も各項目のインデックスを示す)写真で描かれているモックアップのようなUICollectionViewをレイアウトしようとしています:スウィフト:UICollectionビューのレイアウトの問題
コードI現在、試してみて、これを達成するために持っていることである:のviewDidLoadで
:ファイルの後に続いて
collectionView.dataSource = self
collectionView.delegate = self
flowLayout.scrollDirection = .horizontal
flowLayout.minimumLineSpacing = 5
flowLayout.minimumInteritemSpacing = 5
flowLayout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 5)
:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let totalWidth = collectionView.bounds.size.width
let totalHeight = collectionView.bounds.size.height
let heightOfView = totalHeight/3
let numberOfCellsPerRow = 1
let dimensions = CGFloat(Int(totalWidth)/numberOfCellsPerRow)
if (indexPath.item == 4) {
return CGSize(width: collectionView.bounds.size.width, height: heightOfView)
} else {
return CGSize(width: dimensions/2, height: heightOfView)
}
}
このコードは、所望の効果を持っていない、とこのようになりますUICollectionViewを生産している:
あなたが見ることができるように、細胞がさえUICollectionView
ではない、と右側のセルはスクロールスペースにオーバーフローします。項目間のセクションギャップが間違っていて、5番目にスクロールしない限り、画面の右側に大きなセルが表示されます。
はあなたが、これは横スクロールであることを確認しているflowLayout.scrollDirection = .horizontal使用? – Mohammadalijf
垂直スクロールでは、すべて垂直に順番に並んでいきます。 –
サイズの計算に 'minimumLineSpacing'と' minimumInteritemSpacing'を追加してみてください。 – Larme