问题标签 [uicollectionviewlayout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
630 浏览

ios - 奇怪的 UICollectionViewFlowLayout 覆盖行为

我正在尝试覆盖UICollectionViewFlowLayout,但我意识到一些奇怪的事情。在这里你可以看到一个小代码片段:

当一个项目被添加到 时UICollectionViewreloadData被调用。ReloadData总是重新初始化布局,因此它会prepareLayout一次又一次地调用,并且永远不会调用prepareForCollectionViewUpdates

你知道如何处理它吗?

0 投票
5 回答
37961 浏览

ios - UICollectionView 双向滚动

我用UICollectionView垂直卷轴做了一个。

单元格的宽度大于屏幕宽度,所以我创建了一个customFlowLayout基于UICollectionViewFlow布局返回正确计算的内容大小。

但是,这不起作用。当单元格的宽度小于屏幕宽度时,它可以工作。这是否意味着我们在垂直滚动中的宽度不能超过屏幕宽度?

水平滚动也是一样,但是高度CollectionView限制为屏幕高度。

有什么办法让它工作吗?

0 投票
4 回答
10388 浏览

ios6 - UICollectionViewLayout 示例

谁能指出我如何使用 UICollectionViewLayout 创建类似于 Pinterest 列布局的界面的正确方向?

我尝试在网上搜索,但似乎还没有很多例子。

0 投票
0 回答
310 浏览

uiviewcontroller - UICollectionView 单元格自动旋转

我有一个 UICollectionView,它具有水平滚动的默认 Flow 布局。当我旋转设备时,单元格相互重叠。

当我旋转回初始启动方向时,布局会自行修复。

我试过在 didRotate~ 方法中调用 invalidateLayout 和 reloadData ,都没有影响。

有任何想法吗?

干杯!

0 投票
2 回答
9860 浏览

ios - UICollectionView 的每个部分的独立滚动?

是否可以UICollectionView用来构建每个部分都可以独立滚动的布局?例如,假设有 20 行图像,其中每一行可以独立水平滚动以在屏幕外显示更多图像(在此过程中无需滚动其他行);并且整个视图可以垂直滚动以显示更多行。

我相信这样的事情可以通过 UIScrollView 中的几个 UICollectionView 实例来实现;但是,利用 UICollectionView 插入/移动部分会很棒。

我怀疑这不切实际,因为 UICollectionView 是 UIScrollView 的子类;但也许这可以通过自定义 UICollectionViewLayout 来完成?

0 投票
1 回答
349 浏览

ios - 设置 UICollectionViewLayout 以匹配列拆分 UITableView 类似结果

我是 iOS 6 中 UICollectionView 的新手,到目前为止,它看起来很像 UITableView 但是我正在尝试找出一种方法来使 UISCrollview 的 pagingEnabled 感觉与我显示为的一组单元格一起工作如果它们是 UITableView (实际上它们不是)

这就是我想要实现的目标

在此处输入图像描述

我的问题是如何以这种形式布局单元格,我知道我必须继承 UICollectionViewLayout 但完全不明白如何实现这一点,以及如何同时启用分页,如果它必须由 UICollectionViewLayout 启用或应该我自己这样做。

请指教。

0 投票
2 回答
5270 浏览

ios - 多个装饰视图添加到 UICollectionView

我正在创建一个包含子类的基本集合视图布局UICollectionViewFlowLayout。但是,我注意到似乎有几个装饰视图堆叠在一起。

每当用户在最后一部分中选择一个项目时,我都会使用下面的代码添加一个新部分。似乎每当我执行此代码时,都会将装饰视图的一个附加副本添加到每个已经存在的部分。

我通过提供我的装饰视图并看到它们堆叠来alpha证实了这一点。0.2f

在此处输入图像描述

我还执行了集合视图层次结构的转储,并看到了 10 个AFDecorationView我应该只看到 4 个的实例:

我曾尝试查看另一个自定义布局示例,但它们似乎也实例化了很多装饰视图实例。这可能是一个错误UICollecionView吗?还是由我们决定layoutAttributesForElementsInRect:每个部分只添加一次装饰视图布局属性?

自定义布局的装饰相关部分如下所示。

每个部分我只想要一个装饰视图,所以我将装饰视图添加到第一部分。

0 投票
1 回答
10647 浏览

objective-c - UICollectionView performBatchUpdates:为所有部分设置动画

我正在编写一个自定义UICollectionViewFlowLayout,我注意到了这一点initialLayoutAttributesForAppearingItemAtIndexPath:,当我在集合视图上initialLayoutAttributesForAppearingDecorationElementOfKind:atIndexPath:调用时,所有部分都会调用它。performBatchUpdates:completion:结果是所有部分都应用了动画,而不仅仅是新添加的部分。

到目前为止,我尝试的是删除调用来performBatchUpdates:completion:代替简单的更新,但是无论如何,已经存在的部分(所有部分)都是动画的。我想出了一个检查解决方案,以确保我更改了最后一部分的布局属性,但感觉很hacky。

这是只为某些部分设置动画的正确方法吗?

0 投票
1 回答
1446 浏览

ios - 尝试将节页脚添加到 UICollectionView 时崩溃

我正在尝试将节页脚添加到 UICollectionView 并以我不理解的方式失败。

我正在像这样设置主单元格:

xib 是 UICollectionViewCell 的子类,只包含一个 UILabel。这一切都很好。

现在我想添加节页脚,所以我添加了这个(与上面的代码交错,所以 setCollectionViewLayout 调用仍然是序列中的最后一个):

这次的 xib 是 UICollectionReusableView 的子类,并包含一个视图(它的意思是部分之间的水平白线)。视图的大小为 130 x 2。

在我添加 footerReferenceSize 行的那一刻,应用程序在 setCollectionViewLayoutLine 上崩溃

由于未捕获的异常“NSRangeException”而终止应用程序,原因:“-[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array”

我不知道这可能是哪个数组,Google 也没有提供任何帮助。有任何想法吗?我一定是忘记连接什么东西了,但我找不到。

0 投票
2 回答
8904 浏览

ios - UICollectionViewFlowLayout 与子类化 UICollectionViewLayout

我知道记录在案的建议是使用 UICollectionView Flow Layout 如果您正在做任何“像网格或基于行的中断布局”。但是,我不确定这是否适用于我的情况。

我想要一个网格,但想要一个换行的布局。物品应该在水平和垂直方向上无限地布置,而无需堆叠。本质上,如果内容超出框架,则可以水平或垂直滚动​​的巨型棋盘。

要继承 UICollectionView布局,我必须:

  1. 覆盖prepareLayout以停止布局包装项目。这似乎需要做很多工作。
  2. 覆盖collectionViewContentSize

Apple 表示他们在制作 UICollectionView布局方面做了“很多艰苦的工作”,所以如果可以的话,我应该利用它。但是如果我必须重写prepareLayout以关闭换行,我怀疑我正在丢弃他们的大部分工作。在他们剩下的工作中,我可能不会使用其中的大部分(例如,minimumLineSpacingForSectionAtIndex)。

因为我想要的布局是如此简单,我怀疑我应该继承 UICollectionViewLayout ,因为:

  1. 我将有一个更简单、更清晰的实现,所有内容都在一个布局类中,而不是在子类和委托之间传播。
  2. 我认为这不会比继承 UICollectionView Flow Layout 更难,因为在这两种情况下我都必须重写prepareLayout,我怀疑这就是所有艰苦工作的所在。
  3. 与尝试在 UICollectionView Flow Layout 子类之上添加另一个 kludge 相比,我将处于更好的位置以自定义方式调整其他 UICollectionViewLayoutAttributes 。

我的结论正确吗?