偶数行が奇数行よりも大きい2列の表を作成しようとしています。 これは私が現在持っているものです。スウィフトUICollectionセルは、他のすべての行の高さを設定します。
import UIKit
class FBSCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var cellText: UILabel!
}
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
let identifier = "customCell"
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
layout.itemSize = CGSize(width: 333, height: 50)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
collectionView!.collectionViewLayout = layout
}
let reuseIdentifier = "cell" // also enter this string as the cell identifier in the storyboard
var items = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]
// MARK: - UICollectionViewDataSource protocol
// tell the collection view how many cells to make
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.items.count
}
// make a cell for each cell index path
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// get a reference to our storyboard cell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath as IndexPath) as! FBSCollectionViewCell
cell.cellText.text = self.items[indexPath.item]
if (indexPath.item % 4 < 2){ //title cells
cell.backgroundColor = UIColor(red: 95/255, green: 176/255, blue: 223/255, alpha: 1)
cell.cellText.textColor = UIColor.white
cell.frame.size.height = 50.0
//cell.frame.size.width = 333.0
}else{
cell.backgroundColor = UIColor(red: 236/255, green: 236/255, blue: 236/255, alpha: 1)
cell.cellText.textColor = UIColor(red: 178/255, green: 178/255, blue: 178/255, alpha: 1)
print("in the even rows \(indexPath.row)")
cell.frame.size.height = 200.0
//cell.frame.size.width = 333.0
}
return cell
}
}
何らかの理由で、フォーマットが最後の行でのみ機能するようです。
この行がサイズを上書きしている可能性があると思っていました。
layout.itemSize = CGSize(width: 333, height: 50)
だから私はアウトその行をコメントし、お互いにぶつかるの細胞を作っ
cell.frame.size.width = 333.0
を追加しました。
私は、このような
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if (indexPath.row % 4 < 2) {
return CGSize(width: 333, height: 50.0)
} else {
return CGSize(width: 333, height: 100.0)
}
}
とlayoutIfNeededとしてサイズを変更する他の方法を試してみましたが、何も働いていません。 誰かが間違っていることを指摘できますか?ありがとう。