3行2列のレイアウトが必要な6つの要素を持つコレクションビューがあります。 viewDidLoadでSwift:コレクションビューがサイズの変更に正しく調整されていません
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)
}
::これは完璧である。このようになりますコレクションビューを生成
override func viewDidLoad() {
super.viewDidLoad()
collectionView.dataSource = self
collectionView.delegate = self
flowLayout.scrollDirection = .horizontal
flowLayout.minimumLineSpacing = 5
flowLayout.minimumInteritemSpacing = 5
:私はこれを達成するために、次のコードを使用し
しかしときビューがロードされる前に、私は状況に応じてコレクションビューの下のビューを非表示にして、サイズを調整します(高さが50ptになります)。状況的viewWillAppearのビューを非表示にする
Collection view appearance when adjusted to account for hidden view
:、わずか2行の代わりに、3列の間に大きなギャップにスクロールしない限り、画面オフ細胞を(画像を参照)は、以下の4 & 5に変更utput testVariableが真であり、それがある場合bottomViewを隠し、スペースを埋めるためにcollectionView 50 PTS大きな行う場合
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の高さを考慮し、それに応じて調整されることを期待していましたが、それはありません。
お試しください。セルの高さを小さくして作成してください。 –