gpt4 book ai didi

ios - UICollectionViewCell 的 subview 的宽度和高度为零

转载 作者:行者123 更新时间:2023-12-01 19:55:12 24 4
gpt4 key购买 nike

我一直被困在这个问题上,我想在 CALayer 上设置框架、角半径和其他操作。出现在 UICollectionViewCell自动布局完成后。但令我惊讶的是,单元格的 subview 及其 contentView 出现了 (0.0, 0.0, 0.0, 0.0)每次layoutSubviews()在单元格的子类中调用。我终于找到了这个问题的解决方案并将其发布,以便如果您遇到类似问题,每个人都可以看看这个。

最佳答案

我已经敲了一个多星期的头,但终于!这对我来说非常有效:

实现collectionView(_:willDisplay:forItemAt:) UICollectionViewDelegate 的功能并触发 contentView 的新布局周期单元格的collectionView即将显示。

swift :

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
cell.contentView.setNeedsLayout()
cell.contentView.layoutIfNeeded()
}

objective-C :
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[cell.contentView setNeedsLayout];
[cell.contentView layoutIfNeeded];
}

这可能看起来是一个非常繁琐的操作,但每次 Collection View 插入一个新单元格并强制执行自动布局时, frame s 的单元格通常是 (0.0, 0.0, 0.0, 0.0)在初始布局周期之后(如 layoutSubviews() 中观察到的),但如果在单元格即将出现在屏幕上之前手动触发布局, framelayoutSubviews() 中观察到的 subview s是您希望在自动布局周期完成后所期望的。

确保在 contentView 中触发自动布局而不仅仅是单元本身这个手动触发器可能看起来很麻烦,但这是我得到的最好的。

关于ios - UICollectionViewCell 的 subview 的宽度和高度为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43017041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com