概要
CollectionViewでSectionHeaderを表示させたいと考えているのですがうまくいかず困っています。
セルのサイズと左右のマージンなどを独自の値にしたいと考えているのでCollectionFlowLayoutをCollectionViewに設定しているのですがこれがも問題なのでしょうか?
どうやってどちらも設定すれば良いのでしょうか?
swift
1class ViewController: UIViewController { 2 3 @IBOutlet weak var collectionView: UICollectionView! { 4 didSet { 5 collectionView.delegate = self 6 collectionView.dataSource = self 7 collectionView.register(UINib(nibName: "SampleCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "Cell") 8 collectionView.register(UINib(nibName: "SampleSectionHeaderView", bundle: nil), 9 forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, 10 withReuseIdentifier: "SampleSectionHeaderView") 11 } 12 } 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 let layout = CollectionFlowLayout() 16 let sideMargin: CGFloat = 30 17 let sideAllMargin = sideMargin * 2 + 24 18 let width = (self.view.frame.width - sideAllMargin) / 2 19 layout.itemSize = CGSize(width: width, height: 300) 20 21 //セル同士の隙間 22 layout.minimumInteritemSpacing = 24 23 //セル同士の高さの隙間 24 layout.minimumLineSpacing = 24 25 26 layout.sectionInset = UIEdgeInsets(top: 16, left: sideMargin, bottom: 0, right: sideMargin) 27 collectionView.collectionViewLayout = layout 28 } 29 30 31} 32 33 34extension ViewController: UICollectionViewDelegate, UICollectionViewDataSource { 35 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 36 return 20 37 } 38 39 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 40 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! SampleCollectionViewCell 41 cell.hogeView.backgroundColor = .white 42 return cell 43 } 44 45 // Sectionの設定 46 // 呼ばれる 47 func numberOfSections(in collectionView: UICollectionView) -> Int { 48 return 1 49 } 50 // 呼ばれない 51 func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { 52 return CGSize(width: self.view.frame.width, height: 100) 53 } 54 55 // 呼ばれない 56 func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { 57 let view = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionView.elementKindSectionHeader, 58 withReuseIdentifier: "SampleSectionHeaderView", 59 for: indexPath) 60 return view 61 } 62 63 64} 65
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。