前提・実現したいこと
collectionViewのcellの高さをレイアウトを崩さず可変にしたいです。
(このときのレイアウトとはセルに影をつけることができ、セルの高さが可変で、cellの幅を画面の両端から8ずつ空けたものです)
発生している問題・エラーメッセージ
cellにつけている影の挙動がおかしくなります。
cellの幅を画面の両端から8ずつ開けたいのですが、こちらで指定することができず困っています。
また、質問に答えられる方がおらず、困っております
該当のソースコード
swift
1import UIKit 2 3class ViewController: UIViewController, UICollectionViewDelegateFlowLayout,UICollectionViewDataSource { 4 5 @IBOutlet weak var collectionView: UICollectionView! 6 let array = ["labellabellabel","labellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabel","labellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabel", 7 "labellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabellabel"] 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 collectionView.delegate = self 13 collectionView.dataSource = self 14 15 if let flowlayout = self.collectionView.collectionViewLayout as? UICollectionViewFlowLayout{ 16 flowlayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize 17 } 18 19 } 20 21 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 22 return array.count 23 } 24 25 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 26 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell 27 cell.label_1.text = array[indexPath.row] 28 cell.label_2.text = array[indexPath.row] 29 30 cell.layer.cornerRadius = 4.0 31 cell.layer.borderWidth = 1.0 32 cell.layer.borderColor = UIColor.clear.cgColor 33 cell.layer.masksToBounds = false 34 35 cell.layer.shadowColor = UIColor.gray.cgColor 36 cell.layer.shadowOffset = CGSize(width: 0 , height: 1.0) 37 cell.layer.shadowRadius = 4.0 38 cell.layer.shadowOpacity = 1.0 39 cell.layer.masksToBounds = false 40 cell.layer.shadowPath = UIBezierPath(roundedRect: cell.bounds, 41 cornerRadius: cell.layer.cornerRadius).cgPath 42 43 return cell 44 } 45 46 47}
swift
1import UIKit 2 3class CollectionViewCell: UICollectionViewCell { 4 @IBOutlet weak var label_1: UILabel! 5 @IBOutlet weak var label_2: UILabel! 6 @IBOutlet weak var view_1: UIView! 7 @IBOutlet weak var widhtConstraint: NSLayoutConstraint! 8 9 override func awakeFromNib() { 10 super.awakeFromNib() 11 12 // 幅が自動調整されないようにする 13 self.contentView.translatesAutoresizingMaskIntoConstraints = false 14 let screenWidth = UIScreen.main.bounds.size.width 15 widhtConstraint.constant = screenWidth 16 17 } 18}
widthConstraintはlabel_1についての幅の制約です
試したこと
以下のサイトなどを参考にしました
https://qiita.com/usagimaru/items/e0a4c449d4cdf341e152
https://stackoverflow.com/questions/28161839/uicollectionview-dynamic-cell-height
補足情報(FW/ツールのバージョンなど)
Xcode11.6
ご教授願います
あなたの回答
tips
プレビュー