ios - UICollectionView 单元格 subview 不调整大小

标签 ios size cell subview uicollectionview

CollectionView 中,一些单元格应该有一个额外的 subview 或层。 CollectionView 可以被告知调整其单元格的大小,因此所有内容都需要适本地调整大小。

目前,单元格是从包含带有 ImageView 的单元格的 Nib 初始化的;单元格 Nib 链接到自定义 UICollectionViewCell 子类,该子类仅执行 init。选中自动调整 subview 大小。

CollectionView 被告知根据在 sizeForItemAtIndexPath: 中派生并返回的值调整单元格的大小。我已将 FlowLayout 子类化,但它仅指定 ScrollDirectionInsets

一切正常。问题:如何将 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/

相关文章:

ios - 我如何开始在 watchOS 3 SDK 上开发应用程序?

java - Bash 变量扩展导致 Java 命令行中断

text - 在渲染之前获取 SVG 中的文本宽度

SWIFT:滑动表格单元格以更改其颜色

c++ - 我如何在 JUCE 中录制标题没有 'JUNK' 子 block 的音频?

javascript - 全屏切换在 iOS 手机/平板电脑(Safari、Chrome 和 Firefox)上不起作用

c# - UWP 设备总内存

python - `__class__`变量存储在python中的哪里,或者编译器如何知道在哪里找到它

swift - 尝试创建拖放到 TableView 。 swift

ios - UIBezierPath 简单矩形