gpt4 book ai didi

ios - 如何子类化 UICollectionViewFlowLayout 以便可以覆盖 layoutAttributesForElementsInRect

转载 作者:行者123 更新时间:2023-11-28 09:07:46 25 4
gpt4 key购买 nike

我想创建一个垂直无限滚动,在阅读了这么多教程后我明白我需要子类化 UICollectionViewFlowLayout。问题是我不完全明白该怎么做。

我试过以下方法:1. 创建了一个新类 newView 并将其分配给属性检查器自定义类部分中的 View Controller 。

class newView: UICollectionViewController,
UICollectionViewDataSource, UICollectionViewDelegate {
  1. 在此类中实现(覆盖)cellForItemAtIndexPath 和 sizeForItemAtIndexPath,效果很好。到目前为止,我有一个垂直 ScrollView ,其中 1 行包含 2 个项目。但是我在两行之间有不相等的空间。布置前 2 项后,第三项的垂直位置低于前 2 项中较长的一项,如下所示: enter image description here

我读过许多 SO 线程讨论并建议将 UICollectionViewFlowLayout 子类化并覆盖 layoutAttributesForElementsInRect 方法以获得所需的显示。但是当我尝试在我的 View Controller 中添加流布局时,如下所示,它给我错误:

class DiscoverView: UICollectionViewController, UICollectionViewFlowLayout,
UICollectionViewDataSource, UICollectionViewDelegate {

然后我认为可能是我的 View 布局需要子类化而不是 Controller ,所以我尝试创建一个单独的类,如下所示:

class newViewLayout: UICollectionViewFlowLayout {

override func layoutAttributesForElementsInRect(rect: CGRect) -> [AnyObject]? {
return super.layoutAttributesForElementsInRect(rect)
}

然后我尝试将此类分配给我的 View 布局。但它不会出现在自定义类部分(属性检查器)下。它也没有出现在 Attribute inspector > collection view > layout > set custom > Class

我知道这是一些非常基本和愚蠢的错误,但不确定我在概念上做错了什么。

最佳答案

虽然这是旧的,但我不想添加使它对我有用的解决方案:)

您应该在 viewDidLoad 中添加子类,如下所示:

collectionView?.collectionViewLayout = YourCustomClass

关于ios - 如何子类化 UICollectionViewFlowLayout 以便可以覆盖 layoutAttributesForElementsInRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30341250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com