Я чувствую, что это должно быть намного проще, чем есть. Все, что я хочу сделать, это разная высота для каждой ячейки моего вида коллекции (в зависимости от размера метки внутри каждой ячейки). Я использую sizeForItemAtIndexPath
, но проблема заключается в определении высоты до создания ячейки.Как установить разную высоту для каждого UICollectionViewCell
Что я сейчас:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
// target width of each cell - widht of the collectionView
let targetWidth: CGFloat = collectionView.frame.width - 20.0
// setup a prototype cell
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("MyCustomCellIdentifier", forIndexPath: indexPath) as! MyCustomCell
// for the sake of simplicity, let's just assume data is coming from somewhere else
cell.nameLabel.text = data.name
cell.notesLabel.text = data.notes
// resize - layoutSubviews in LocationCell controller
cell.layoutIfNeeded()
// get the size based on constraints
var size = cell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
// force width
size.width = targetWidth
return size
}
Что не работает в dequeueReusableCellWithReuseIdentifier
. Я предполагаю, что это потому, что UICollectionViewCell
пока недоступен? Я также попробовал registerClass
, чтобы получить это, но это тоже не работает. :(
Есть ли более простой способ сделать это целиком? Все, что мне нужно сделать, это выяснить, какая высота для ячейки до ее создания. Мне нужен экземпляр подкласса UICollectionViewCell
, чтобы даже иметь возможность начать (так что я могу на самом деле получить доступ к этикетке и попытаться определить высоту) застрял на этом в течение нескольких часов:../
Спасибо. Это работает. По-прежнему кажется, что я должен иметь возможность рассчитать высоту, основанную на фактической ячейке, или она должна быть более интуитивной, но я думаю, что это не так. :(Благодаря! – SeeMeCode