ios - 是否可以增加 UICollectionViewLayout 视口(viewport)? (即在 UICollectionView 框架外加载 +2/-2 个单元格)

标签 ios uiscrollview uicollectionview uicollectionviewlayout

我有一个使用 UICollectionView 的全屏图片库。它被分页并且一切运行正常,但有一件事我不喜欢。

单元格只有在进入可见视口(viewport)时才会被重复使用,并且在分配新图像时我会得到闪烁效果(对于当前行为来说是正常的)。

如何指定一个比当前 UICollectionView 框架稍大的视口(viewport),以便加载和重用 View 外的 +1/-1 页面?当它们进入 View 时,它们已经被初始化并准备就绪,因此闪烁效果将消失。

谢谢!

最佳答案

注意:这是假设垂直的,水平调整

你可以让frame变大,然后添加一个contentInset

CGFloat offset = 40.0; // or whatever works

CGRect yourFrame = yourCollectionView.bounds;
yourFrame.size.height += offset;
yourCollectionView.bounds = yourFrame;

CGFloat halfOffset = offset / 2.0;
yourFlowLayout.sectionInset = UIEdgeInsetsMake(halfOffset, 0, halfOffset, 0);

您必须根据您的代码放置这些,但这就是我们正在做的。我们正在稍微扩展您的框架,以便单元格重用发生在可见范围之外。通过将插图添加到您的流程布局中,您可以让内容仍然正确对齐。

关于ios - 是否可以增加 UICollectionViewLayout 视口(viewport)? (即在 UICollectionView 框架外加载 +2/-2 个单元格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23660928/

相关文章:

ios - 在 XCode : Exception Breakpoints 中调试

ios - 使用 UIScrollView 的垂直分页

ios - UIWebView 将垂直滚动事件委托(delegate)给父级,如果滚动到顶部或底部

ios - UICollectionView:didSelectItemAtIndexPath: 如何根据选择用数据填充新 View ?

ios - UICollectionView — 缩放单元格以适合屏幕

ios - 当 segue 甚至 NavigationController Swift 时,TabBar 消失

ios - 如何从 GPUImageHarrisCornerDetector 获取角坐标?

ios - SwiftUI:如何检测列表何时滚动?

UITableViewHeaderView 默认卡在单元格上方,而不是上方

swift - UICollectionView.setCollectionViewLayout 出现 EXC_BAD_ACCESS 错误