2014-12-09 2 views
1

У меня есть время, когда моя высота 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. Вот как это выглядит на раскадровке:

enter image description here

И в симуляторе:

enter image description here

Как вы можете видеть, высота UICollectionViewCell не меняется. Я также попытался добавить свойство макета estimatedItemSize в viewDidLoad, но все, что я положил в , оценил размер, это как все UICollectionViewCell s.

Я могу отправить ссылку github любого из этого неясно. Очень ценю помощь, это беспокоило меня в течение нескольких дней!

ответ

0

UIView имеет размерThatFits в качестве расширения. Я использовал его для текстовых полей центра. Основная концепция заключается в загрузке представления, получении измерений, которые он предоставляет, а затем изменении размера/позиции ваших контейнеров по своему усмотрению.

+0

Да, это то, что я пробовал, но для выполнения правильной высоты я должен выполнить большую работу, которая в соответствии с тем, что я читал, вам не нужно делать на iOS 8 (и не следует делать с автоматической компоновкой). Я читал [эту статью] (http://captechconsulting.com/blog/tyler-tillage/ios-8-tutorial-series-auto-sizing-table-cells) раньше - прокрутите вниз до «iOS 8 Magic» и скажите «Автоматическая компоновка с радостью вернет вам эту разрешенную высоту». Но как? – SeeMeCode

Смежные вопросы