Altura de dimensionamento automático do UICollectionView

Como redimensiono adequadamente um UICollectionView para que ele exiba completamente seu conteúdo? Eu tentei muitas coisas, incluindo definir seu quadro, chamarreloadData e invalidar o layout:

self.collectionView.contentSize = CGSizeMake(300, 2000);
self.collectionView.frame = CGRectMake(0, 0, 300, 2000);
[self.collectionView reloadData];
[self.collectionView.collectionViewLayout invalidateLayout];

mas nada disso tem efeito. Depois de pressionar o botão, ainda vejo a visualização inicial, assim:

Eu tenho um pequeno programa de demonstração em que tenho uma fonte de dados produzindo 100 elementos. No Interface Builder, defina inicialmente o tamanho do UICollectionView como um valor pequeno, para que nem todos os elementos se ajustem, depois pressione um botão após o qual o código acima é executado. Espero que o UICollectionView mostre agora todos os elementos, mas não mostra.

EDITAR: O programa de demonstração pode ser encontrado emhttps://github.com/mjdemilliano/TestUICollectionView.

EDIT2: Observei que a atualização do quadro foi perdida em algum momento, porque se eu pressionar o botão novamente, o quadro atual retornará ao valor antigo. Após adicionar algumas instruções de log no manipulador de eventos do botão, a saída do log é:

before: frame = {{0, 58}, {320, 331}}, contentSize = {320, 1190}
update button pressed
after: frame = {{0, 0}, {300, 2000}}, contentSize = {300, 2000}
before: frame = {{0, 58}, {320, 331}}, contentSize = {320, 1190}
update button pressed
after: frame = {{0, 0}, {300, 2000}}, contentSize = {300, 2000}

Não entendo por que a mudança de quadro não é mantida, o que está mudando.

Em algum momento, substituirei os valores codificados por valores obtidos no layout do fluxo, mas queria excluir isso e manter meu exemplo o mais simples possível.

Contexto: O que eu quero fazer eventualmente é o seguinte: Eu tenho uma exibição rolável com vários controles, como rótulos e imagens, e uma exibição de coleção com conteúdo dinâmico. Quero rolar tudo isso, não apenas a exibição de coleção, portanto, não estou usando os próprios recursos de rolagem da exibição de coleção, que funcionam bem.

questionAnswers(8)

yourAnswerToTheQuestion