10.11 NSCollectionView - determinando o tamanho da célula dinamicamente

Notas de versão do AppKit para OS X v10.11 sugere que os itens da exibição de coleção possam ser redimensionados por item:

O tamanho do item pode ser determinado globalmente para todos os itens de um CollectionView (configurando a propriedade "itemSize" de um NSCollectionViewFlowLayout) ou pode variar de um item para o próximo (implementando -collectionView: layout: sizeForItemAtIndexPath: no delegado do seu CollectionView).

No meu caso, meu CollectionViewItem consiste em um único rótulo que contém uma sequência de comprimento variável. Estou usando o NSCollectionView para exibir uma matriz de seqüências de caracteres, pois o NSStackViews não suporta ligações de matriz e não flui para novas linhas. A matriz de strings é vinculada ao conteúdo do NSCollectionView por meio de um controlador de matriz.

O arquivo da ponta do meu item está configurado corretamente, a visualização raiz e o rótulo têmAbraçando Conteúdo eResistência à compressão de conteúdo Prioridades de 1000 e as arestas são alinhadas via AutoLayout.

Agora, o método delegado do NSCollectionViewLayout possui esta assinatura:

func collectionView(collectionView: NSCollectionView, 
                    layout collectionViewLayout: NSCollectionViewLayout, 
                    sizeForItemAtIndexPath indexPath: NSIndexPath) -> NSSize

Minha idéia agora é pegar o item em si, executar uma passagem de layout sobre ele e retornar o novo tamanho do item.

let item = collectionView.itemAtIndexPath(indexPath)!
item.view.layout()
return item.view.bounds.size

O problema com essa abordagem é que itemAtIndexPath retorna nulo. Se eu retornar um tamanho padrão no caso nulo, esse tamanho padrão será usado para todas as células.

Como posso definir um NSCollectionView para respeitar as restrições de AutoLayout do meu item e, para cada célula, usar o tamanho calculado dinamicamente?

questionAnswers(1)

yourAnswerToTheQuestion