我应该继承啥 UICollectionViewLayout 或 UICollectionViewFlowLayout

Posted

技术标签:

【中文标题】我应该继承啥 UICollectionViewLayout 或 UICollectionViewFlowLayout【英文标题】:What should I subclass UICollectionViewLayout or UICollectionViewFlowLayout我应该继承什么 UICollectionViewLayout 或 UICollectionViewFlowLayout 【发布时间】:2015-02-03 18:28:33 【问题描述】:

我的布局草图如下:-

上图,固定布局结构如下

-> First Row 有第 1 项,占据了集合视图的所有宽度。

->第二行有项目编号。 2 和 3 并平均分享宽度。

->从第三行开始,我们必须使用默认大小。

这里的 item1、item2-item3 和所有其余的项目分别有 3 种不同的设计。

collectionview 有 1 个部分,这里的数据源是简单的 nsarray。

所以我的问题是我应该使用什么?任何建议都会有所帮助,我是 UICollectionView 的新手,我发现它有点难以理解。

【问题讨论】:

【参考方案1】:

我认为您可以将 UICollectionViewFlowLayout 与具有两种不同单元格种类的集合视图一起使用。不需要子类。如果您希望布局在横向模式下发生变化,这可能会变得很麻烦。

第一种单元格类型用于项目 1、2 和 3。通过实现 collectionView:sizeForItemAtIndexPath: 方法,您将获得不同的布局。只需确保索引 0(项目 1)是全角,索引 1、2(项目 2,3)是半角。

然后您可以为其他所有内容实现另一种单元格。这些项目也将是全宽的。

cellForRowAtIndexPath 中,您需要检查 indexPath 的 item 属性以查看您是哪个索引。如果 > 2,则使用第二种单元格类型。

【讨论】:

我对 iPhone 和 iPad 有不同的布局,这就是为什么我必须对它进行子类化。 根据您的 iPad 布局,您可以创建两个特定于设备的类来实现 collectionView 和 collectionViewLayout 委托方法。如果您的 iPad 布局不适合流式布局,那么是的,子类化是必要的。

以上是关于我应该继承啥 UICollectionViewLayout 或 UICollectionViewFlowLayout的主要内容,如果未能解决你的问题,请参考以下文章

我啥时候应该继承 EnumMeta 而不是 Enum?

我应该啥时候设计我的 UINavigationBar?

是和继承有啥区别?

httpClient.getConnectionManager() 已弃用-应该改用啥?

我啥时候应该使用结构而不是类?

CSS里 width:inherit 啥意思