2列のCollectionViewの余白を埋めて横幅いっぱいにする(伝われ
Storyboardだけでは固定値しか設定出来ない関係で不可。古いやり方でAutoResizingというのもあったそうだが、今は基本は3つくらいのやり方に集約されているようだ。
Storyboardを使っていて、ViewControllerの中にCollectionViewとCellを入れている場合(Xibを使っていない)場合はデリゲートUICollectionViewDelegateFlowLayout
を使うのがよさそう。
extension ViewController: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let spaceForCells: CGFloat = 3
let cellWidth: CGFloat = (self.view.bounds.width / 2) - (spaceForCells / 2)
let cellHeight: CGFloat = (cellWidth * 235 / 156)
return CGSize(width: cellWidth, height: cellHeight)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 3
}
}
Cellの横幅
まずCellの横幅は画面横幅の半分から余白分を引いた長さになる。ただし、デフォルトでは左右それぞれにCellがひっついているレイアウトになり、1つ目のCellは右側に余白ができ、2つ目のCellは左側に余白ができる。なので引くべき値はStoryboard上でのMin Spacing For Cells
にあたる値の半分となる。
(↑セクションの左のセルは右余白のみが、右のセルは左余白のみができる)
ちなみに余白を引かずに画面横幅のピッタリ半分にしてStoryboardでMin Spacing For Cells
を0以上とかに設定しちゃってると1列になっちゃう。
Cellの縦幅
今回はすべてのCollectionViewの縦横比を固定したい。インスタのストーリーなどは「1080 x 1920」の「9:16」だが、最低3列は見えてほしかったので「156:235」にした。ここは任意で変えてほしい。
参考リンク
Author And Source
この問題について(2列のCollectionViewの余白を埋めて横幅いっぱいにする(伝われ), 我々は、より多くの情報をここで見つけました https://qiita.com/maztak/items/544010937d93c0b5fc5a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .