问题标签 [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.
ios - UICollectionView - 单元格之间的距离?
我正在使用单元格宽度为 67 的 UICollectionView,现在我正在使用流布局。
我连续有 3 个单元格,单元格之间有 30px 的空间。如何使该距离更小,以便我可以连续放置四个单元格?这个方法和它有关系吗?
ios - 带有 invalidateSupplementaryElements 和 UICollectionViewLayoutInvalidationContext 的 invalidateLayout
我正在尝试刷新页脚(supplementaryElement)。我正在使用该invalidatelayout
方法。基于这里的建议。苹果文档在这里。
我收到以下错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“发送到 -[UICollectionViewFlowLayout invalidateLayoutWithContext:] 的失效上下文 () 不是 UICollectionViewFlowLayoutInvalidationContext 类型的实例或子类”
实现代码:
看起来invalidateLayout
method 是期待UICollectionViewFlowLayoutInvalidationContext
而不是UICollectionViewLayoutInvalidationContext
.
我正在使用 Xcode 8 和 Swift 3。
我在 Xcode 中的故事板在这里 -
“Next”是具有自定义类“ActivitiesSelectMembersFooterView”的页脚
ios - 具有居中单元格的 UICollectionViewFlowLayout
我正在尝试实现CollectionView
与居中单元格的水平对齐,并且我正在使用自定义UICollectionViewFlowLayout
. 我找到了几个解决方案,UICollectionViewDelegateFlowLayout
但如果您使用自定义的UICollectionViewFlowLayout
.
这是我的 UICollectionViewFlowLayout。有什么想法该怎么做?
布局是这样连接的:
在 MyFlowLayout 中调用 Prepare 。
ios - 以编程方式添加 UICollectionView 时应用程序崩溃
我正在尝试在我的项目中以编程方式添加带有自定义 UICollectionViewCell 的 UICollectionView。
这是我添加 CollectionView 的实现
这个“setUpCollectionView”函数是从我的视图控制器的 ViewDidLoad() 调用的。
我刚刚在 MyChecklistsCell 中实现了这两个功能。
有人可以帮我吗?谢谢。
swift - UICollectionViewCell 的动态高度以编程方式与约束?
我从来没有见过一个主题有这么多不同的答案,而不是为集合视图单元格设置动态高度。一些解决方案具有难以想象的代码量,这只会进一步促成UICollectionView
集群的共识,因为这可以通过UITableView
不做任何事情来实现,因为当约束被正确链接时,动态单元高度是内置的。但我想更好地处理集合视图。这是一场噩梦。
如何在没有一百行代码的情况下在 Swift 中以编程方式(无情节提要)将集合视图单元格的高度设置为动态到其内容大小?
您可以将以下内容插入一个空白项目,如果您愿意,它将运行干净。
集合视图流布局:
集合视图控制器
集合视图单元
swift - 检测 UICollectionView 重新排序结束
我想在锁定前n 个单元格时提供 UICollectionView 重新排序的选项。
为了表示前n 个单元格被“锁定”(无法重新排序),我想将它们的背景颜色更改为浅灰色。
到目前为止,我已经能够通过targetIndexPathForMoveFromItemAt
我遇到的问题是检测用户何时释放重新排序单元格,以便我可以将锁定单元格的背景颜色设置为正常。
我尝试过使用moveItemAt
,但是当用户激活重新排序但最终将原始单元格放回其原始索引或重新排序被取消时,它不会被调用。
我尝试过使用didUnhighlightItemAt
,但该方法在 之后被调用targetIndexPathForMoveFromItemAt
,而不是在用户释放单元格之后。
ios - 水平 UICollectionView 单行布局的自我调整大小 - 不是单元格
用例:
- 我有一个
UICollectionView
要展示的产品,让我们称之为productsViewCollection
(只有一行有多个ProductCell
s)。 - 每个
ProductCell
可能有不同的高度,但它们都具有相同的宽度。 ProductCell
可以在运行时添加。- 我正在根据 s 使用自动调整大小的单元
AutoLayout
格ProductCell
。 我有
/li>UICollectionViewFlowLayout
自定义类来使产品单元对齐顶部。
问题是什么?
- (1) 我没有找到确定高度的方法
productsCollectionView
。 - (2) 我没有找到强制
productsCollectionView
只显示一行的方法。 - (3)
ProductCell
在productsCollectionView
前导中插入一个新的滚动到第一个项目!,我需要将它保持在相同的位置。
我试过什么?
- 尝试问题(1):
- 确定没有高度的宽度是行不通的,因为我需要确定高度,
productsCollectionView
否则ProductCell
s 不会出现。 - 因此我尝试设置高度约束,但应用程序崩溃了
"The behavior of the UICollectionViewFlowLayout is not defined because the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values."
,productsCollectionView
没有插图(水平 UICollectionView 单行布局)。 - 我也尝试使用
collectionView.contentSize
高度约束来确定高度,productsCollectionView
但它不起作用,因为即使您调用layoutIfNeeded
或任何类似方法,它也不会具有最终计算的大小(如何使用 FlowLayout和许多其他链接确定 UICollectionView 的高度) . - 我也尝试使用
collectionView.collectionViewlayout.collectionViewContentSize
高度约束来确定高度,productsCollectionView
但它不起作用,它会正确计算宽度,而高度将根据AutoLayout
约束而不是最大ProductCell
高度来确定,所以我没有找到自动确定高度的方法(如何使用 FlowLayout和许多其他链接确定 UICollectionView 的高度)。 - 因此,最后我尝试根据
ProductCell
s 最大高度手动更改高度,我为 设置了更大的高度约束,productsViewCollection
并在MyViewController
我调用layoutAttributesForItem
了 中的每个项目productsViewCollection
来计算每个ProductCell
高度。 - 它起作用了,但是如果我需要插入任何其他产品,我应该做同样的事情,但这也会导致 UI 中的错误行为,
productsCollectionView
它将扩展几毫秒然后正确裁剪:(。
- 确定没有高度的宽度是行不通的,因为我需要确定高度,
- 尝试问题(2):
- 当然,我将其设置为水平,但这还不够,如果产品高度的总和小于
productsCollectionView
高度(在 UICollectionView - Swift 中显示一行),流程布局会将产品添加到同一列。 - 所以我尝试为
minimumInteritemSpacing
它设置更大的值,但不是 100% 正确,它会在最后添加额外的空间(UICollectionView: One Row 或 Column)。 - 我试图在方法中使用自定义类使
ProductCell
高度与高度相同,但它不起作用,高度改变了但同一列的单元格,我不知道为什么!productsCollectionView
UICollectionViewFlowLayout
layoutAttributesForItem
- 当然,我将其设置为水平,但这还不够,如果产品高度的总和小于
- 尝试问题(3):
- 我不知道为什么插入新项目会导致滚动,有时是第一个项目,有时是几个项目之前,有时它与奇怪的调整大小动画一起正常工作!无论如何,我试图禁用我的调整大小
productsCollectionView
代码,但什么也没发生。 - 我试图保存当前
productsCollectionView.contentOffset
然后应用它,它只有在我将animated
参数设置为时才有效true
,否则它将是未指定的滚动。
- 我不知道为什么插入新项目会导致滚动,有时是第一个项目,有时是几个项目之前,有时它与奇怪的调整大小动画一起正常工作!无论如何,我试图禁用我的调整大小
注意: 对不起,我的英语不好,谢谢。
ios - 朝着更轻的视图控制器,有没有更好的方法来自定义 UICollectionViewFlowLayout?
有没有什么方法可以定制UICollectionViewFlowLayout
,没有UICollectionViewDelegateFlowLayout methods
?
并且可以解析UICollectionViewLayoutAttributes
给size
定的,而不给定的origin
?
所以我不需要UICollectionViewLayoutAttributes
在- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
方法中实现 per 的框架。
不计算每个项目的来源会很方便。
这是我的示例代码:
换句话说,使用 的动态调整特性UICollectionViewFlowLayout
,而不符合UICollectionViewDelegateFlowLayout
协议。
正如 Apple 所说,动态调整功能:
流式布局在一个方向上使用固定距离,在另一个方向上使用可滚动距离来布置其内容。例如,在垂直滚动的网格中,网格内容的宽度被限制为相应集合视图的宽度,而内容的高度会动态调整以匹配网格中的部分和项目的数量。
我觉得很有可能,我现在不知道如何实现。也许是苹果的 API。
非常欢迎任何建议或解释。
提前谢谢了。
ios - Swift 3:根据最大文本长度调整 MessageBubbleSize
我想在 messageBubble中显示senderName
和。timeStamp
我进行了很多搜索,并尝试了JSQMessagesViewController库issues
部分和 SO 中提到的各种解决方案。我尝试调整宽度,但它没有反映任何变化,尽管它显示了高度的变化。坦率地说,我不明白如何渲染方法或方法,因为我不知道 Obj-C。sizeForItemAt
messageBubbleSizeForItem
bubbleSizeCalculator
在这里,messageBubble 会根据消息文本长度调整自身大小,但会剪切senderName
和timeStamp
文本。我在 上添加了时间戳标签,为和空间UIImageView
设置了约束。然后在其上方添加 textView 并设置约束。Leading
Top
在cellForItemAt
我打电话给cell.messageBubbleImageView.addSubview(cell.timeStamp)
. 即使文本是 2 个字母,它也应该在每个气泡中显示senderName
完整timeStamp
。senderName
,timeStamp
并且messageText
是动态的,从 XMPP 接收。
请帮我。谢谢你的时间。