在 CollectionView
中,一些单元格应该有一个额外的 subview 或层。 CollectionView
可以被告知调整其单元格的大小,因此所有内容都需要适本地调整大小。
目前,单元格是从包含带有 ImageView 的单元格的 Nib 初始化的;单元格 Nib 链接到自定义 UICollectionViewCell
子类,该子类仅执行 init。选中自动调整 subview 大小。
CollectionView
被告知根据在 sizeForItemAtIndexPath:
中派生并返回的值调整单元格的大小。我已将 FlowLayout 子类化,但它仅指定 ScrollDirection
和 Insets
。
一切正常。问题:如何将 subview /层添加到单元格以便它也能正确调整大小?我尝试在关闭 translatesAutoresizingMaskIntoConstraints
的情况下添加 subview 和图层,但它们根本不会自动更改大小。还尝试使用代码框架/ View 而不是 Nib 。
我现在得到的最好的是 cell.contentView.layer
子层,我在 cellForItemAtIndexPath:
中添加了它;这是通过存储来自 sizeForItemAtIndexPath:
的单元格的 frame.size
来“手动”调整大小的,这不仅丑陋而且最终会导致子层对于不同的单元格具有不同的大小。
感谢任何帮助!
最佳答案
我刚才遇到了同样的问题。
当使用 UICollectionViewFlowLayoutDelegate 方法根据设备和设备方向设置单元格大小时,将正确计算大小,但 subview 不会调整大小以填充新大小的单元格。结果是一个大的空白单元格和小的 subview ,这些 subview 不填充单元格的边界/保持大小等于它们在 xib 文件中的当前值。
我通过在 awakeFromNib
中执行以下操作解决了这个问题:
- (void)awakeFromNib
{
[super awakeFromNib];
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
self.contentView.translatesAutoresizingMaskIntoConstraints = YES;
}
在此之前,contentView 掩码是nil
。
关于ios - UICollectionView 单元格 subview 不调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15303100/