У меня есть gridlist, который выглядит, как этокак размер ячейки в GridView
class ListViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout{
private var collection: ACollection?
private var collectionViewLayout:UICollectionViewFlowLayout?
override func loadView() {
super.loadView()
collectionViewLayout = UICollectionViewFlowLayout()
collectionViewLayout?.itemSize.width = 128
collectionViewLayout?.itemSize.height = 227
view = UICollectionView(frame: CGRect.zero, collectionViewLayout: collectionViewLayout!)
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let someObj: SomeObj = collection!.getObject(index: indexPath.item)
let cell: UICollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: NSStringFromClass(UICollectionViewCell.self), for: indexPath as IndexPath)
let cellView: UIImageView = UIImageView(image: object.image)
cellView.frame = cell.bounds
cell.contentView.addSubview(cellView)
return cell
}
Я хотел бы мои клетки имеют различные соотношения сторон, хотя в зависимости от значения в someObj. Как изменить размер ячеек без их перекрытия? Я попытался сделать
cellView.frame = CGRect(x:0,y:0,width:100,height:300)
cellView.frame =cell.bounds
но ячейки перекрываются.
Я считаю, что вы должны реализовать функцию 'collectionView (, layout: sizeForItemAt:)' в 'UICollectionViewDelegateFlowLayout', так как похоже, что вы используете раскладку потока. – sCha
@sCha Это работает несколько. Я вижу, что когда я меняю размер, он рисует ячейку со старым размером, а другой сверху с новым размером – user2175783