##実現したいこと
CollectionViewの大きさがアプリごとに異なってしまうため、AutoLayout設定をして同じ大きさの表示にしたい
##試していること
CollectionView自体を変えることはできないのではないかと思い、CollectionViewCellのサイズを自動調整するコードの実装。
しかし何度試してもPreviewでアプリごとにCollectionViewの大きさが変わっている。
以下にViewController と CollectionView.cellのコードを載せます
swift
1 override func viewDidLoad() { 2 super.viewDidLoad() 3 4 //UICollectionViewFlowLayoutをインスタンス化 5 let layout = UICollectionViewFlowLayout() 6 layout.sectionInset = UIEdgeInsets(top: 15, left: 5, bottom: 15, right: 5)//レイアウトを調整 7 layout.minimumInteritemSpacing = 0 8 collectionView.collectionViewLayout = layout 9 if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout { 10 flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize 11 } 12 13 collectionView.delegate = self 14 collectionView.dataSource = self 15 } 16 17 //セルの個数を指定します 18 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 19 return imageArray.count 20 } 21 //セルの中身の表示の仕方を設定します 22 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 23 //表示するCellの登録 24 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! MyCustomCell 25 26 cell.cameraImageView.image = imageArray[indexPath.row] 27 28 return cell 29 } 30 31 //セルの配置について決める 32 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 33 let horizontalSpace : CGFloat = 10 34 let cellSize : CGFloat = self.view.bounds.width / 3 - horizontalSpace 35 return CGSize(width: cellSize, height: cellSize) 36 }
swift
1import UIKit 2import DKImagePickerController 3 4class MyCustomCell: UICollectionViewCell { 5 @IBOutlet weak var cameraImageView: UIImageView! 6 7 override func awakeFromNib() { 8 super.awakeFromNib() 9 10 self.contentView.translatesAutoresizingMaskIntoConstraints = false 11 let leftConstraint = self.contentView.leftAnchor.constraint(equalTo: self.leftAnchor) 12 let rightConstraint = self.contentView.rightAnchor.constraint(equalTo: self.rightAnchor) 13 let topConstraint = self.contentView.topAnchor.constraint(equalTo: self.topAnchor) 14 let bottomConstraint = self.contentView.bottomAnchor.constraint(equalTo: self.bottomAnchor) 15 NSLayoutConstraint.activate([leftConstraint, rightConstraint, topConstraint, bottomConstraint]) 16 } 17} 18
>CollectionViewの大きさがアプリごとに異なってしまう
数種類のアプリに共通する設定はできないのでアプリごとに大きさをしていしてください。
大きさを調整したいのはcollectionViewですか?collectionViewCellですか?cameraImageViewですか?
tybiogorou様
コメントありがとうございます
情報不足で申し訳ありません
私が変更したいのはCollectionViewのサイズです
cellやcameraImageViewのサイズはコードで設定したつもりなのですが、CollectionViewのサイズがアプリによってバラバラなので直したいと考えています
アプリによってバラバラなのは当たり前ですが。
画面の大きさごとに変えたいならば、collectionViewにAutoLayouを設定してあげてくださいな
。
アプリではありません、失礼しました
正しくはスマホの機種です
スマホの機種が異なる(例えば画面の小さいiPhone8 plusや画面の大きいiPhone11pro max)でも同じように画面の横幅分のCollectionViewを表示したいと考えています
どのように書き直すべきか対処法がわかりましたら教えていただけると幸いです
まず、質問のタイトルを直されては?