У меня есть время, когда моя высота UICollectionViewCell
будет динамической на основе содержимого внутри (в элементе UILabel). Я читал повсюду о том, как это намного проще сделать с iOS 8, но я потратил много времени, пытаясь понять это. Надеюсь, я просто пропустил что-то маленькое. Будем надеяться ...Как сделать динамическую высоту UICollectionViewCell (w/Auto Layout) на iOS8
я смог рода сделать эту работу, установив вручную высоту каждой ячейки с использованием this approach (sizeForItemAtIndexPath
часть) - расчет все это на основе текста (sizeToFit
), но, как я сказал, я читал снова и снова, что это должно быть «волшебным» с Auto Layout и iOS 8, и мне не нужно было все это делать.
Так вот мой код в cellForItemAtIndexPath
методе контроллера представления:
var cell:LocationCell = collectionView.dequeueReusableCellWithReuseIdentifier("LocationCell", forIndexPath: indexPath) as LocationCell
let thisLocation = fetchedResultsController.objectAtIndexPath(indexPath) as LocationModel
cell.notesLabel.text = thisLocation.notes
cell.notesLabel.sizeToFit()
return cell
достаточно просто? правильно? Но каждая ячейка имеет одинаковую высоту - неважно, какой размер notesLabel
. Вот как это выглядит на раскадровке:
И в симуляторе:
Как вы можете видеть, высота UICollectionViewCell
не меняется. Я также попытался добавить свойство макета estimatedItemSize
в viewDidLoad
, но все, что я положил в , оценил размер, это как все UICollectionViewCell
s.
Я могу отправить ссылку github любого из этого неясно. Очень ценю помощь, это беспокоило меня в течение нескольких дней!
Да, это то, что я пробовал, но для выполнения правильной высоты я должен выполнить большую работу, которая в соответствии с тем, что я читал, вам не нужно делать на iOS 8 (и не следует делать с автоматической компоновкой). Я читал [эту статью] (http://captechconsulting.com/blog/tyler-tillage/ios-8-tutorial-series-auto-sizing-table-cells) раньше - прокрутите вниз до «iOS 8 Magic» и скажите «Автоматическая компоновка с радостью вернет вам эту разрешенную высоту». Но как? – SeeMeCode