问题标签 [uicollectionview]

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 回答
3707 浏览

ios - UICollectionView 不调用委托方法

UICollectionView在情节提要中设置了一个并连接了数据源和委托出口。我已经通过 nib 注册了一个单元格,我在该cellForItemAtIndexPath:方法中将其出列。

所有作品都完美地期望永远不会调用委托方法。例如:当触摸一个单元格时,我希望didSelectItemAtIndexPath:被调用。

我已经仔细检查了集合视图的委托 - 它已正确分配。

有人知道不调用这些方法的原因吗?

0 投票
4 回答
20964 浏览

ios - UICollection View - Segue - 确实选择了特定的单元格,LOG

我开始使用 UICollectionview 来加载定制的相册,相册加载得很好,数据来自我的服务器(SQL-JSON-NSARRAY-NSDictionary)并且被填充到单元格中就好了,但是现在我当用户选择该单元格以加载具有该图像的全尺寸新 UIVIewController 时会喜欢它(以便他们可以查看/打印/共享等)

但是,我陷入了“准备继续”方法中,因为我无法从该特定单元格中提取任何信息

作为现在的测试,我只想让 NSLOG 说“用户选择了专辑标题 %@”

到目前为止,这是我的代码,任何帮助将不胜感激......

这样你就可以看到我的来自服务器的 JSON 数据进来了,这里是

0 投票
3 回答
37893 浏览

objective-c - 设置部分插图时,带有 FlowLayout 的 UICollectionView 不滚动

我正在以编程方式使用 UICollectionView。

我将其框架设置如下:

UICollectionViewFlowLayout的部分插图设置为:

我也只有1节。

我已将高度设置为 3,000 以查看集合视图是否会滚动,但不会滚动。我将其设置为,因为当我插入新项目时集合视图似乎没有向上或向下滚动。

UICollectionView是从 a 子类化的UIScrollView,这意味着我可以继续重置滚动视图内容大小。这会正常工作吗?

唯一的问题是,如果我知道所有项目的大小,包括每行有多少项目,这将起作用。

如果每个项目的大小不同,我将如何找出每一行的大小?我需要它来添加所有行大小并增加self.collectionView.

编辑

即使我上面的建议,重置内容大小,也不能正常工作!更新我的收藏视图时,我尝试了以下操作:

不过,这很丑陋。这是因为它假设我所有的图像的大小都是 200x200px,每行适合 3 个图像(因此除以 3)。

此外,即使我有 +300,最后一行我也只能看到大约 3/4,而不是全部。我必须滚动更多,我才能看到它,但它又回到了 3/4。它有点像滚动刷新,只有当你拖动它时视图才会移动,当你离开它时,它会撞回原来的位置。为什么会这样?只是苹果设计UICollectionView的这么差吗?这有点荒谬...... UITableViews 根据他们的内容自动调整他们的滚动。

0 投票
2 回答
16700 浏览

xcode - UICollectionViewCell 将被显示/被显示?

很简单的问题。

是否有通知或委托类型的方法来判断何时显示 UICollectionViewCell 对象?

0 投票
3 回答
11786 浏览

iphone - UICollectionView:如何在页脚和页眉之间添加空间?

我有一个使用标准 FlowLayout 类的 CollectionView,每个部分都有水平滚动和页眉和页脚。

现在页脚和页眉视图之间(即部分之间)的像素为零。我想在它们之间添加一点间距,但不要在第一部分上方或在最后一部分之后。所以我不能只在页眉和页脚视图本身中添加该空间。

我本来期望像“interSectionSpacing”这样的东西,但显然没有这样的设置。有任何想法吗?

0 投票
1 回答
12571 浏览

ios - 以编程方式创建的 UICollectionView 不会滚动

我正在使用UICollectionView. 这很简单:AUIViewUICollectionView编程方式创建,UICollectionViewFlowLayout与一个部分一起使用,滚动设置为水平。它出现在屏幕上,并在正确的单元格中包含正确的数据。但它不滚动——事实上它根本不响应用户交互。

这是视图的初始化程序:

我尝试以编程方式设置UserInteractionEnabledYES,但这没有任何区别(也不应该有,因为默认UserInteractionEnabled设置为YES)。FWIW,集合视图使用标准UICollectionViewCellUILabels 添加到他们contentView的 s 作为子视图。

关于为什么这不是滚动的任何想法?非常感谢任何和所有帮助。

0 投票
3 回答
41835 浏览

objective-c - UICollectionView 标头未显示

我正在做一个项目,该项目使用一个UICollectionView来显示几张专辑。这些项目显示得很好,但现在我想在第一部分上方显示一个标题。

为此,我在registerNib:forSupplementaryViewOfKind:withReuseIdentifier:我的 init 方法中添加了 。像这样:

AlbumHeaderNib 包含类的视图AlbumHeader,它是 的子类UICollectionView。)

之后,我实现了collectionView:viewForSupplementaryElementOfKind:atIndexPath方法:

现在它应该尝试加载标题视图,我想。但事实并非如此,补充视图的方法不会被调用。

我错过了什么?卡住了几个小时,已经多次阅读UICollectionViews 上的文档,但似乎没有任何帮助。有什么想法吗?

0 投票
5 回答
50841 浏览

scroll - UICollectionView 有效拖拽

我目前正在尝试使用 UICollectionView 实现 UITableView 重新排序行为。

让我们调用一个UItableView TV和一个UICollectionView CV(澄清以下解释)

我基本上是在尝试重现电视的拖放,但我没有使用编辑模式,只要触发长按手势,单元格就可以移动。它工作得很好,我正在使用 CV 的移动方法,一切都很好。

我更新了 CV 的 contentOffset 属性以在用户拖动单元格时处理滚动。当用户转到顶部和底部的特定矩形时,我会更新 contentOffset 和 CV 滚动。问题是当用户停止移动手指时,手势不会发送任何更新,这会使滚动停止并在用户移动手指后立即重新开始。

这种行为绝对不自然,我宁愿继续滚动,直到用户释放 CV,就像电视中的情况一样。电视拖放体验很棒,我真的很想重现同样的感觉。有谁知道他们在重新排序期间如何管理电视中的滚动?

  • 我尝试使用计时器重复触发滚动动作,只要手势位置在正确的位置,滚动很糟糕而且效率不高(非常缓慢和跳跃)。
  • 我还尝试使用 GCD 在另一个线程中收听手势位置,但结果更糟。

我对此一无所知,所以如果有人有答案,我会嫁给他!

下面是 longPress 方法的实现:

为了使 CV 滚动,我正在使用该方法:

0 投票
1 回答
3922 浏览

objective-c - UICollectionView 在包含标题时不会重新加载项目

编辑:最初的问题是错误的,所以有些内容可能有点不相关。但可能会让你对我做事的方式有更好的印象。

我有一个非常奇怪的问题NSFetchedResultsController。首先,我将描述我的应用程序的当前情况。我有多个AlbumPhoto实体,它们都是抽象类的子类AbstractItem

在我AlbumViewController的中,我使用 to aNSFetchedResultsController来获取所有AbstractItem当前的superAlbum. 像这样:

当我选择 时Album,会启动另一个实例AlbumViewController并将其推送到我的导航控制器上。在这种情况下parentAlbum,设置为选定的对象。

现在,当我Album使用以下代码添加新内容时,会发生错误。

使用对象controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:的类型调用该方法。那个在 current 中不存在。因此,当它尝试在集合视图中更新它时会失败。NSFetchedResultsChangeUpdateparentAlbumNSFetchedResultsController

不在当前中的对象怎么可能NSFetchedResultsController用于通知?我该如何解决这个问题?

编辑:
发布问题后,我意识到这实际上不是NSFetchedResultsController关于错误对象的通知。但它会通知上一个(父)集合视图中的对象,但它会对它自己的集合视图控制器执行此操作。

但这可能只是问题所在;集合视图控制器在不可见时收到通知,看起来它目前无法处理。我这样处理通知:

我很确定它以前工作得很好。在迭代自上次提交以来所做的更改后,我让它再次工作。在我删除UICollectionView标题(补充视图)后它再次起作用。

所以:UICollectionView当项目有标题并且当前不可见时,我无法更新项目。这是一个很难发现的问题,但是如何解决呢?认为这是一个非常奇怪的问题。

我得到的错误:

0 投票
3 回答
7455 浏览

objective-c - UIImageView 在 UICollectionViewCell 子类中显示超出范围的图像

我必须创建一个自定义 UICollectionViewCell 来显示图像和图像名称,并且在图像顶部,有一个帧图像,其宽度和高度比图像大 2 个像素。但是,无论我做什么,图像似乎都比框架图像大。我对表格视图做了同样的事情,而且效果很好。

这是代码:

UICollectionViewCell 的大小为 67 x 100,因此在代码中,bgImage 应始终为 67 x 67,其原点为 (0,0),而 contentImage 的帧应为 (0,0,63 ,63)。通过调试,它似乎是正确的。但是,conentimage 总是比 bgImage 大。图像的原始尺寸为 80 x 80。我在 cell.ContentView 或 imageView 上尝试了 setClipToBounds、setContentViewMode,但没有一个有效。

附上有关该问题的屏幕截图。UIImage 视图中的图像超出范围

任何帮助表示赞赏。