O layout automático no UICollectionViewCell não está funcionando
Eu tenho um UICollectionView simples com células que têm um único UITextView. O UITextView é restrito às bordas da célula, portanto, eles devem permanecer do mesmo tamanho que o tamanho da célula.
O problema que estou tendo é que, por algum motivo, essas restrições não estão funcionando quando eu especifico o tamanho da célula via collectionView: layout: sizeForItemAtIndexPath :.
Eu tenho o tamanho da célula definido como 320 x 50 no Storyboard. Se eu retornar um tamanho com 2 vezes a altura do tamanho da célula com sizeForItemAtIndexPath:, o UITextView permanecerá a mesma altura, apesar das restrições que eu definir. Estou usando o Xcode 6 GM.
Meu código do controlador de exibição é:
@implementation TestViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.collectionView.delegate = self;
self.collectionView.dataSource = self;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
UICollectionViewCell *c = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]];
NSLog(@"%f", c.frame.size.height);
UITextView *tv = (UITextView *)[c viewWithTag:9];
NSLog(@"%f", tv.frame.size.height);
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 1;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
return cell;
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)collectionView.collectionViewLayout;
CGSize size = flowLayout.itemSize;
size.height = size.height * 2;
return size;
}
@end
Esses logs no viewDidAppear: fornecem uma saída de:
100.00000
50.00000
Como você pode ver, a altura do UITextView não muda com a altura da célula.
Aqui está uma captura de tela do storyboard que eu configurei com um UITextView restrito no UICollectionViewCell:
Eu sei que o uso de restrições de layout automático funciona bem com UITableViewCells e redimensionamento dinâmico. Não faço ideia por que não está funcionando neste caso. Alguém tem alguma idéia?