问题标签 [uicollectionviewflowlayout]

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

ios - UICollectionView 水平分页布局

嗨,我正在尝试实现这个 UI 元素,它看起来(对我来说)就像一个水平的 UIPickerView。这是在 iOS 上创建“memoji”时的示例 GIF:

示例 GIF

示例图片

我一直在尝试使用 UICollectionView 和自定义 UICollectionViewFlowLayout 来实现这一点。但没有太多的运气。

到目前为止我尝试的是使用

停止每个单元格上的滚动,从而给它一种分页感。但为了做到这一点,我实际上必须制作

返回比实际存在更大的内容大小,否则它只会反弹collectionView,无论我在前一个函数中返回什么,都不会卡入到位。

我也尝试使用

设置collectionView.contentOffset但是这会导致动画中出现奇怪的跳跃,并且再次没有正确更改它。除了每个单元格的分页之​​外,我还想在那个 UI 元素上实现什么,当通过元素时每个滚动上都有一个小的触觉反馈,以及边框上左右元素的淡入和淡出。如果有人能指出我正确的方向,也许 UICollectionView 不是要走的路?我会很感激。谢谢

0 投票
1 回答
89 浏览

swift - 动态修复屏幕中的 UICollectionView 单元格

我正在开发一个 tvOS 应用程序,我想在不垂直或水平滚动的情况下修复电视屏幕中的所有单元格。这里的细胞计数将是动态的,这是主要问题。我想像这样设置所有单元格

例如:如果细胞计数为 4

在此处输入图像描述

如果细胞计数为 5

在此处输入图像描述

如果细胞计数为 9

在此处输入图像描述

如果细胞计数为 11

在此处输入图像描述

这里需要动态设置列和行以及单元格的高度和宽度。(不允许滚动)

我的代码是:

实际上,如果单元格数量更多,我需要 N x (N-1) 列和行。

0 投票
1 回答
35 浏览

ios - 使用 UICollectionViewFlowLayout 的 UICollectionView 使单元格居中和未对齐

我正在使用一个标准UICollectionViewFlowLayout,但它似乎做了一些过度工作,因为它将部分的单元格与一个项目居中,如果该部分包含 2 或 3 个项目,它们不会分布以适合宽度

如何始终获得相同的分布(向左)和边距(如超过 3 个项目)

在此处输入图像描述

0 投票
4 回答
1660 浏览

ios - UICollectionViewCell 宽度大于我在 sizeForItemAt 中设置的宽度

我的宽度/高度UICollectionView匹配所有可用空间。

我想在一行中显示两个单元格(两列)

所以一个单元格的宽度应该是UICollectionView( collectionView.frame.width / 2)的一半宽度

所以我以编程方式改变单元格的宽度UICollectionViewDelegateFlowLayout

但单元格的视觉宽度远大于collectionView.frame.width / 2.0(在 iPhone SE 模拟器上测试)

所以它需要超过屏幕的半角空间

在这里,我打印了有关尺寸的信息:

didSelectItemAt 单元格宽度 187.5,表格宽度:375.0,半宽度:187.5

在此处输入图像描述

为什么会这样?

边距也有问题,但首先我必须解决这个问题

更新

虽然它适用于 iPhone 6s 模拟器(我编辑图像以将两个项目放在第一行以检查它们是否适合):

在此处输入图像描述

那么 iPhone SE 有什么问题呢?

我不想发现其他 iPhone 或 iPad 也可能存在同样的问题

0 投票
1 回答
606 浏览

ios - 从情节提要的 UICollectionViewFlowLayout 创建 IBOutlet 时出错

我正在尝试从我的集合视图的流布局属性(位于 collectionViewController 中)设置一个 IBOutlet:

但是,当我连接插座时,出现以下 3 个错误:

  • 不能用“弱”属性覆盖“强”属性
  • 带有Objective-C选择器'collectionViewLayout'的'collectionViewLayout'的getter与具有相同Objective-C选择器的超类'UICollectionViewController'的'collectionViewLayout'的getter冲突
  • 类型为 'UICollectionViewFlowLayout?' 的属性 'collectionViewLayout' 无法覆盖类型为“UICollectionViewLayout”的属性

有人能解释一下这意味着什么以及我该如何解决吗?

0 投票
2 回答
113 浏览

swift - 在 CollectionView iOS 中删除间距

我正在使用UICollectionViewDelegateFlowLayout委托使其成为方形,但最后显示出奇怪的间距。

在此处输入图像描述 在此处输入图像描述

我的代码

如何删除间距?请帮忙。

0 投票
2 回答
151 浏览

ios - 单元格周围的边距,如 Android GridLayout

在 Android 中,很容易创建一个带有下边距的网格列表:

在此处输入图像描述

我为 iOS 找到了这个解决方案,但它不会在单元格和父视图之间添加边距,只在单元格之间添加边距

在此处输入图像描述

我该如何解决?

PS 我不想硬编码任何东西,所以它应该适用于所有 iPhone/iPad 设备

0 投票
0 回答
88 浏览

ios - 单元格不会在自定义 CollectionView 流布局上调整大小,每个单元格应该有不同的大小

我正在关注一个关于如何在集合视图上制作标签流系统的旧教程。我已经设法显示每个不同大小的完整标签,但我正在努力让单元格自行调整大小。我是 Swift/Xcode 的初学者,所以错误一定很愚蠢,但我想不通。

我已按照本教程进行操作,但我的不起作用。我已经根据 Xcode 推荐的内容进行了一些更改,因为那里的语法有点旧。我想我可能误会了什么。

我已将项目上传到 GitHub,但我认为问题如下:

这个全局变量应该是一个用于检查大小的覆盖函数的单元格:

viewDidLoad()我抓住牢房

在扩展上

我有以下功能来调整单元格的大小(来自教程)

我希望不同的行能够拥有不同数量的标签(例如在流布局中)并且每个标签单元格具有不同的宽度。相反,每个单元格都有大小,但标签可以有不同的大小。

0 投票
1 回答
1426 浏览

swift - UICollectionView 中的节标题,仅出现第一个

我为节标题创建了一个类,并将其加载到我的 UICollectionView 中。我能够显示第一个标题(尽管很奇怪,见下文),但是任何以下部分标题都是空白的。正在引用大小,但内容(背景颜色,标签)不会出现。

然后还有......确实显示的一个部分标题,它显示为缩进约。150px 没有明显的原因。标题是否默认居中对齐?如果是这样,我将如何左对齐这些?

我的部分标题类:

在我的 UICollectionView

这就是我实例化 UICollectionView 的方式

我的 CollectionViewFlowLayout

}

这是当前结果的屏幕截图。您可以看到第一个标题出现,但缩进。第二个标题有它的空间,但它的任何内容都没有出现。在此处输入图像描述

0 投票
2 回答
1005 浏览

ios - 在 iOS 12 中,当 UICollectionView 是使用具有约束的 Self Sizing 单元格创建时,重新加载布局时高度错误,直到我滚动

使用此处解释的解决方案时,我在 iOS 12 中遇到了一个奇怪的问题。

首次加载集合视图时效果很好,但是当我尝试使用collectionView.reloadData()或重新加载集合视图时collectionView.collectionViewLayout.invalidateLayout(),会添加一个奇怪的单元格高度。

一旦我开始滚动,一切都会再次正常。请看下面的图片。第一张图片显示了视图加载后单元格的工作高度。第二个显示按下重新加载后的单元格。

在第一次加载时效果很好

单击重新加载栏按钮后

重新加载栏按钮调用以下方法。

请在此处查看 GitHub 中的示例项目以重现该问题。我使用 Xcode 10.1 和 10.2 重现了这个问题。

任何解决问题的帮助或指导将不胜感激!

提前致谢。