我试图制作宽度根据其内容而变化的UICollectionViewCells。我找到了一个关于这个主题的优秀教程:Variable-Sized Items in UICollectionView但让读者想知道该技术应用于到故事板:
另一种方法 - 在某些方面更方便 - 方法是在故事板中使用集合视图。在那里,单元原型不会位于单独的XIB文件中,而是位于集合视图的结构层次结构中。探索如何获得一个尺寸单元,留给读者一个练习。
本教程本身使用XIB,但不清楚如何从故事板中获取sizingCell
,如作者所称。
答案 0 :(得分:0)
在自定义布局或流程布局符合UICollectionViewDelegateFlowLayout Protocol
并实施collectionView:layout:sizeForItemAtIndexPath:
然后返回您想要该项目的大小。
答案 1 :(得分:0)
遗憾的是,我能看到实现这一目标的唯一明显方法是为所有单元格制作单独的Xib,并自己手动将它们注册到集合视图中。
然后,您还可以使用UINib
实例来实例化单元格以进行项目大小调整。
UINib * nib = [UINib nibWithNibName:NSStringFromClass([JDPCell class])
bundle:nil];
[self.collectionView registerNib:nib
forCellWithReuseIdentifier:JDPCellReuseIdentifier];
id cell = [[nib instantiateWithOwner:nil options:nil] firstObject];
self.prototypeCells[JDPCellReuseIdentifier] = cell;
然后在
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewFlowLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
NSString * reuseIdentifier = ...;
UICollectionViewCell * cell = self.prototypeCells[reuseIdentifier];
[cell updateConstraints];
return cell.frame.size;
}
答案 2 :(得分:0)
我认为我们可以以编程方式获取新单元格,然后添加相同的子视图和约束。 但它只是一个旁路,任何人都有更好的主意?