我有一个包含一个单元格的集合视图。我正在 sizeForItemAt 函数中调整该单元格的大小。但问题是,如果高度很小,则单元格居中对齐。我想将所有调整大小的单元格对齐到集合视图的底部。我正在使用斯威夫特。我尝试通过以编程方式添加视图来对视图使用约束。没有结果。我正在尝试在 Canva App 中制作类似于可滚动设计的视图。请帮忙。我的收藏视图目前看起来像这样的模拟器图像,我想将单元格与底部对齐,就像我正在尝试制作的画布视图一样
Code:
CollectionViewController -
import UIKit
class CollectionViewController: UIViewController,UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
@IBOutlet weak var collectionView: UICollectionView!
let columns: CGFloat = 6.0
override func viewDidLoad() {
super.viewDidLoad()
collectionView.delegate = self
collectionView.dataSource = self
collectionView.register(OneCollectionViewCell.self, forCellWithReuseIdentifier: "cellOne")
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return Int(columns)
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellOne", for: indexPath) as! OneCollectionViewCell
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let width : CGFloat
let height : CGFloat
if indexPath.item == 0 {
width = 100
height = 50
} else if indexPath.item == 1{
width = 80
height = 100
} else if indexPath.item == 2 {
width = 50
height = 70
}else {
width = 80
height = 100
}
return CGSize(width: width, height: height)
}
}
CollectionViewCell-
import UIKit
class OneCollectionViewCell: UICollectionViewCell {
public var view1: UIView = {
let viewView = UIView()
viewView.translatesAutoresizingMaskIntoConstraints = false
viewView.contentMode = .scaleToFill
viewView.clipsToBounds = true
return viewView
}()
override init(frame: CGRect) {
super.init(frame: frame)
contentView.addSubview(view1)
view1.backgroundColor = .black
view1.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 0).isActive = true
view1.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0).isActive = true
view1.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 10).isActive = true
view1.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: 5).isActive = true
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
//fatalError("init(coder:) has not been implemented")
}
}