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

ios - 集合视图第一个单元格大小问题

我必须根据我的 api 响应隐藏 uicollectionview 的一些单元格。

我根据我的 json 响应值在 collectionview 的 sizeForItemAtIndexPath 方法中将单元格大小设置为零。

但即使将大小设置为零后,位于第 0 个索引的单元格始终可见。

我无法过滤掉并从数组中删除数据。我需要这些数据进行一些操作。

我的 UICollectionView 数据源方法。

我的流程布局委托方法。

预期结果是 0 和 1 部分中第 0 个索引处的单元格被隐藏但仍显示。 在此处输入图像描述

0 投票
1 回答
3411 浏览

swift - 即使滚动方向设置为水平,UICollectionView 也会垂直显示?

我正在尝试UIScrollView使用此代码水平绘制列表但无法正常工作?

流布局方法

这是委托和数据源方法

当我运行它时,它会显示这个(项目的垂直列表)。有什么我错过的吗。任何帮助,将不胜感激。

在此处输入图像描述

0 投票
2 回答
1391 浏览

ios - 无法使用 AutoLayout 设置 UICollectionViewCell 的宽度

我有一个集合视图,其中包含动态高度的单元格(基于可能的多行标签和内部的文本视图),当我跨越多行时,它可以完美地适应高度。但是,当文本只有一个单词或没有覆盖整个屏幕宽度时,单元格的宽度与需要的一样宽,从而导致单元格彼此相邻而不是彼此下方。

看看 textview 中不同长度的文本的结果。

但是,我希望单元格位于彼此下方,想想 Instagram 或 Twitter 的视图。我显然需要为单元格设置一个宽度约束,使其等于屏幕的整个宽度,但我似乎无法找到如何做到这一点。

我在 AppDelegate 中使用 FlowLayout 和估计的ItemSize:

我还在 viewDidLoad 中为 collectionView 设置了约束,因此 collectionView 占据了屏幕的整个宽度和高度:

我对标签和文本视图的约束看起来像这样,还允许宽度采用所需的大小(所以它不是固定的):

在我看来,所有这些对于完成这项工作至关重要。但是,在我看来,我还没有设置宽度约束来完成这项工作。我试图在 collectionView 上添加一个 widthAnchor(等于 view.widthAnchor),这不起作用:

我也尝试在 sizeForItemAt 方法中设置宽度,但这也不起作用:

现在,我正在检查宽度以查看哪里出了问题,但我得到了我需要的结果,我认为:

结果是:

我对如何前进没有想法。我浏览过的与此问题相关的所有文章或帖子要么明确计算高度,要么使用我上面提到的两种解决方案。

关于我做错了什么的任何想法?

0 投票
0 回答
369 浏览

ios - 轮播布局集合视图问题

  • 你好,我已经关注了 raywenderlich 的视频来进行集合视图自定义布局。UICollectionViewFlowLayout 的子类如下

    导入 UIKit

    类 CharacterFlowLayout: UICollectionViewFlowLayout {

    让standardItemAlpha: CGFloat = 0.5
    让standardItemScale: CGFloat = 0.5

    var count = 0 覆盖 func prepare() {

    超级准备()

    }

覆盖 func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]?{

}

我不明白计算背后的逻辑?你能解释一下为什么我们要计算距离和比率吗?

0 投票
2 回答
1415 浏览

ios - 使用类似“标签”的单元格设置 collectionView

我一直在使用自定义UICollectionViewFlowLayout来调整单元格之间的空间,这样我就可以在我的collectionView. 但是使用我当前的代码,我无法弄清楚如何在不“破坏”行数的情况下调整单元格大小。这使得一些单元格认为它们可以容纳一行,但它们不能。

我的自定义流程布局

所以在我的ViewController我已经扩展

当我尝试这段代码时,我在 iPhone X 的结果部分中得到了结果。您可以看到标签“机器学习”跳到新行,因为它认为它可以适合上面的行。如果我删除函数中单元格的“填充” sizeForItem,那么我就不会有这个问题。但它看起来很糟糕。

所以我的问题是:如何在不破坏 flowLayout 的情况下在单元格上使用填充?


到目前为止,我目前的结果如下所示:

iPhone X:

iPhone X 结果

0 投票
1 回答
5093 浏览

ios - UICollectionView 警告

警告: The item width must be less than the width of the UICollectionView minus the section insets left and right values, minus the content insets left and right values.

代码:

我不确定问题出在哪里......它在 iPad 上有UICollectionViewFlowLayoutAutomaticSize和。wrap_content错误听起来像UICollectionViewFlowLayoutAutomaticSize;它有时会起作用。当它这样做时,完美地工作。如果没有,它会冻结并按如下方式填充日志:

The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x10313a9a0>, and it is attached to <UICollectionView: 0x104096e00; frame = (10 138; 300 420); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x1c0458750>; layer = <CALayer: 0x1c02254e0>; contentOffset: {0, 0}; contentSize: {300, 220}; adjustedContentInset: {0, 0, 0, 0}> collection view layout: <UICollectionViewFlowLayout: 0x10313a9a0>. 2018-10-04 11:03:35.869371-0500 MyApp[276:5353] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger. 2018-10-04 11:03:35.869398-0500 MyApp[276:5353] The behavior of the UICollectionViewFlowLayout is not defined because: 2018-10-04 11:03:35.869445-0500 MyApp[276:5353] the item width must be less than the width of the UICollectionView minus the section insets left and right values, minus the content insets left and right values. 2018-10-04 11:03:35.869555-0500 MyApp[276:5353] Please check the values returned by the delegate.

基本上,它一遍又一遍地重复相同的日志。

先感谢您。

0 投票
2 回答
33 浏览

uicollectionview - 在 UICollectionViewController 中指定具体的单元格大小?

我有一个UICollectionViewController带有单元原型的故事板。单元格大小未直接指定,它会导致随机 UI 错误,例如拉伸单元格动画。我想直接设置大小,但我没有找到如何在 xcode 10(和最新的 swift)中做到这一点。如何解决这个问题?

注意:我知道UICollectionViewDelegateFlowLayout 的存在,但我不知道如何将它应用到UICollectionViewController.

0 投票
2 回答
234 浏览

ios - UICollectionview 自定义布局:某些索引比其他索引具有更多可见单元格?

我面临一个奇怪的问题,我似乎无法弄清楚或在网上找到任何有关的信息。

所以我试图复制 Shazam 发现 UIUICollectionView和 custom复制 Shazam discover UI UICollectionViewFlowlayout

到目前为止,一切都运行良好,但是当添加“卡片堆栈”效果时,我(或者更确切地说是实现它的人)注意到似乎有一个奇怪的问题,在某些情况下(或者更确切地说,当特定索引可见时,在示例中,它是第 5、9 行)将有 4 个可见单元格而不是 3 个。我的猜测是这与单元格重用有关,但我不确定它为什么这样做。我查看了各个单元格的尺寸,它们似乎都相同,所以并不是单元格的大小不同。

有谁知道为什么会发生这种情况?非常感谢任何帮助或建议。

我将在下面添加自定义流程布局和屏幕截图的代码片段。你可以在这里下载完整的项目,或者在 Github 上查看 PR

这是一个视觉比较:

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

自定义flowlayout源码:

编辑1:作为一个额外的澄清,最终的最终结果应该看起来像这样:

在此处输入图像描述

编辑 2: 似乎每从我的测试中滚动 4-5 张卡片就会发生一次。

0 投票
2 回答
677 浏览

ios - 如何水平居中动态宽度的collectionView项目?

您好,我环顾四周,还没有找到解决我问题的方法。我正在尝试将 collectionView 的项目水平居中,其中项目的宽度和大小都不同。因此,该部分中的某些行可能有 2 个项目,有些可能只有 1 个。我见过的大多数解决方案都设置了 UIEdgeInsets 但由于我不知道该行是否包含多少项目,除了不知道项目大小,我一直很难让它工作。

示例图像

我附上了一张图片,向您展示我目前拥有的东西。任何建议将不胜感激

0 投票
1 回答
164 浏览

swift - Self sizing images in collection view cell

I want to add photos to one of my collection view cells similar to how snapchat does...

enter image description here

There are only two main requirements:

  1. The amount of photos will vary so the overall cell height must also vary.

  2. Each photo should maintain its aspect ratio.

My initial thought was to the array of images to be displayed and right before the cell is dequeued, calculate each cells size maintaining it's aspect ratio and then using that data to present the images inside a collection view inside of the cell. However my results are lacking.

The images seem to be sizing properly, however the image layout handled by UICollectionViewFlowLayout doesn't place the images properly

enter image description here enter image description here

Here is the method that calculate the sizing.

#xA;

Both the minimum line and inter-item spacing are set to zero.

Any suggestions?