Я пытаюсь реализовать представление коллекции с ячейками с динамической высотой.Динамическая высота UICollectionViewCell в зависимости от шрифта UITextView lineHeight
Некоторые из видовых коллекции клеток содержат UITextView, то UITextViews имеет их высоту настроено так:
[textViewHeightConstraint setConstant: numberOfRowsToDisplay * [[textView font] lineHeight]];
TextView является подвидом из другой точки зрения, которая в определенной .xib, эта точка зрения является XIB добавляется как поднабор ячейки, когда ячейка отменяется (когда вызывается collectionView: cellForItemAtIndexPath:).
Но мне нужно вернуть высоту ячейки в методе «collectionView: sizeForItemAtIndexPath:», где экземпляр ячейки недоступен, поэтому я не могу получить доступ к текстуру: свойство [[textView font] lineHeight].
Как я могу это решить?
PS: текстовое поле пуста, поэтому высота не зависит от NSString, на которую я могу вызвать метод sizeWithFont: и я не могу жестко кодировать высоту текста. «NumberOfRowsToDisplay» извлекается во время выполнения, а шрифт textView также не является жестко запрограммированным.
EDIT: я уже пытался позвонить "dequeueReusableCellWithReuseIdentifier: forIndexPath:" в "CollectionView: sizeForItemAtIndexPath:" метод, он создает бесконечный цикл, как если бы я звонил "CollectionView: cellForItemAtIndexPath:".
Вы не должны пытаться получить доступ к ячейке. Вы должны запросить источник данных для значения numberOfRowsToDisplay для конкретного indexPath. Ячейки предназначены для отображения только данных, а не для их доставки. – rdelmar
Да, вы не можете произвольно деактивировать ячейки для вычисления высот, как вы можете, с помощью 'UITableView'. Очень надоедливый. –
@rdelmar это не «numberOfRowsToDisplay», который трудно получить, это строкаHight из textView, textView находится в ячейке, поэтому я не могу получить доступ к свойству шрифта. – LiohAu