问题标签 [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 投票
2 回答
7844 浏览

ios - 使用部分的 UICollectionView 在单元格之间留下间隙

我正在使用 UICollectionView 来显示多个数据部分。这些部分具有固定数量的项目。我希望所有项目都显示在一个连续的网格中。

现在我在水平方向上完成了这个: 在此处输入图像描述

但在垂直方面,这留下了很大的差距: 在此处输入图像描述

我想解决部分之间的这种差距,因为它很丑而且不属于那里。我很乐意使用自定义 FlowLayout,但我找不到一个指导我正确方向的教程(我找到了几个,但没有一个真正涉及到这个问题。)

任何人都可以帮我解决这个问题,或者至少指出我正确的方向吗?

PS:我已经实现了部分,因为我正在动态加载数据。目前,我不能选择使用 1 部分。

更新 根据要求,我正在添加用于我当前 FlowLayout 的值。我在全屏(减去 UINavigationBar)UICollectionView 上使用标准水平流布局,每个部分有 21 个项目。

  • 滚动方向:水平
  • 单元格大小:248、196
  • 页眉/页脚大小:无
  • 单元格的最小间距:10
  • 行的最小间距:10
  • 部分插图:20、20、10、10
0 投票
1 回答
2880 浏览

objective-c - 从一个 UICollectionViewLayout 切换到另一个时的自定义动画?

作为测试,我制作了一种布局,以垂直线显示单元格,另一种以水平布局显示单元格。当我称它为[collectionView setCollectionViewLayout:layout animated:YES];两个位置之间的动画时,它非常干净。

现在我想做是让所有视图在最终到达目的地之前在屏幕上进行一些旋转、扭曲和翻转(可能使用 CAKeyframeAnimations),但我找不到一个很好的地方来连接它。

我尝试子类化UICollectionViewLayoutAttributes以包含动画属性,然后在我正在使用的重写applyLayoutAttributes:方法中设置这些动画。UICollectionViewCell这有效......除了它似乎只布局转换完成后发生。如果我想使用它,我必须让布局不要立即更改对象的当前位置,只有在它到达代码的这个应用属性部分之后,这似乎需要做很多工作......

或者我可以 subclassUICollectionView和 override setCollectionViewLayout:animated:,但这似乎也需要在布局之间保留很多状态。这些选项似乎都不正确,因为有一种简单的方法可以为布局中的单元格添加/删除设置动画。我觉得应该有类似的东西来挂钩布局 之间的动画。

有谁知道获得我想要完成的事情的最佳方法?

0 投票
1 回答
410 浏览

ios - UICollectionView 呈现比故事板更高

我在故事板(iPad)中有一个 UICollectionView。我没有以编程方式设置任何属性(边距、大小等)——我的委托只实现了强制方法(部分和项目的数量,cellForItemAtIndexPath)。我使用的是标准流布局,水平滚动(1 行),没有顶部/底部插图。我有一个自定义单元格类,但同样没有什么花哨的(只是一些标签的 IBOutlets 和一个 imageView)。我的单元格是 100x100 像素。collectionView 的高度设置为 100px,IB 将其显示为这样。

属性检查器 尺寸检查员

但是,当我运行该应用程序时,我将 collectionView 呈现为 140 像素的高度(单元格上方和下方的边距为 20 像素)。我为所有属性(包括最小间距)使用了不同的值,但无法使视图更短——我只能通过更改插图来使其更高。

这是一个错误还是我错过了一些我无法规避的逻辑,例如标准布局将强制包括其内容上方和下方的一些最小间距?

0 投票
3 回答
1055 浏览

ios - UICollectionViewFlowLayout 子类导致单元格消失

我正在尝试偏移所选单元格下方所有单元格的 y 轴中心。我向子类添加了一个属性CollectionViewFlowLayout,称为extendedCell,它标记了我应该抵消其他所有内容的单元格。

结果发现途中发生了一些不好的事情,因为底部的单元格消失了。我有一种感觉,这与单元格超出UICollectionView内容大小有关,但是在生成布局时设置大小并没有帮助。任何想法如何解决这种消失?

0 投票
0 回答
119 浏览

uicollectionview - 根据单元格数量调整 UICollectionView 的大小

我有一个UICollection包含 1-4 个单元格的视图,下面的 aUITextField被限制在它的底部。

我希望能够调整它的大小,UICollectionView所以如果它有 1 个或 2 个单元格,那么它的高度UICollectionView就是这个高度,否则如果它有 3 个或 4 个单元格,高度就是 2 * 单元格高度 + 垂直间距。

有没有一种简单的方法可以在没有所有数学的情况下做到这一点?有约束系统似乎很奇怪,但仍然需要做这个费力的数学来确定 a 的大小UIView

一如既往的感谢

0 投票
2 回答
2954 浏览

objective-c - 使用 UICollectionViewFlowLayout 时在 UICollectionViewCell 的边界之外绘制

有没有人能够在UICollectionViewCell没有单元格剪裁到其边界的情况下在 a 的边界之外绘制?我有一个使用UICollectionViewFlowLayout(水平)的香草集合视图,我希望能够在UICollectionViewCell不破坏UICollectionViewFlowLayout. 设置clipsToBoundsNO似乎没有奏效。

0 投票
1 回答
2166 浏览

objective-c - 如何使用 Storyboard 继承 UICollectionViewFlowLayout

我正在使用带有 Storyboard 的 UICollectionView 并尝试将 UICollectionViewFlowLayout 子类化,但它似乎不起作用。

我创建了子类CollectionViewFlowLayout

在 Storyboard 的 Identity Inspector 中,我更改了流布局的类:

Storyboard 的身份检查器

但是当我保存/构建/运行时,itemSize 没有设置为 250,并且我的 NSLog 没有被输出。

我已经在诸如此类的示例中看到您可以在 collectionView 控制器中设置布局,但我有点假设如果您在情节提要中设置它就没有必要。

0 投票
2 回答
506 浏览

iphone - 自定义 UICollectionView 布局

我需要实现的 UICollectionView 布局包含三个部分,一个在另一个垂直下方,每个部分都可以水平滚动。

第 1 部分:1 2 3 4 5 ....................

第 2 部分:1 2 3 4 5 ....................

第 3 部分:1 2 3 4 5 ....................

由于 UICollectionView 只有一个滚动视图,因此所有部分一次滚动,但一次不滚动。所以我觉得自定义布局在这种情况下无济于事。请对其他可能的实现有所了解。

谢谢你。

0 投票
2 回答
2447 浏览

ios - UICollectionView 与 UIWebView 大小问题

我需要实现一个UICollectionView. 我使用的细胞UIWebViews在它们里面。主要问题是我想让单元格大小适应 webViews 中的实际内容。

我使用了以下两种方法:

问题当然是 webView 只有在加载后才知道它的大小:

仅在 webview 加载其内容后,是否可以通过某种方式调整UICollectionViewLayout特定单元格的大小?

我发现的每个示例要么具有固定大小,要么不使用 webView,这需要时间才能计算出适合其内容的大小。

有没有办法做到这一点?

0 投票
0 回答
119 浏览

ios - UICollectionViewFlowLayout 奇怪的行为

我正在使用带有 UICollectionView 的 UICollectionViewFlowLayout 来显示水平线图像。

这个想法是这样的(带有 3 个单元格的示例):

但我得到了类似的东西

滚动后,cell3 移动到正确的位置。

在 iPad(横向)中,我的单元格大小为 (480,640),而我的 UIEdgeInsets 为 (150,150,150,150)。

我不知道发生了什么,有什么想法吗?