ios - 当项目具有动态大小时,如何在 Collection View 中有单个水平行的项目?

标签 ios swift uicollectionview uicollectionviewcell flowlayout

我正在尝试从服务器中提取未知数量的列表,并且我有一个 Collection View ,其中每个列表都有一个单元格/项目。每个单元格都有一个标签,其中包含列表的名称。因为我不知道标签会有多长,所以我将单元格设置为动态大小并在我的 UICollectionViewFlowLayout 上设置以下属性:

flowLayout.estimatedItemSize = CGSize(width: 100, height: 100)
flowLayout.minimumInteritemSpacing = 11
flowLayout.minimumLineSpacing = 12

单元格本身的大小很好,我在标签上使用了自动布局,因此单元格基于固有大小。但我的问题是,我要么得到不止一行的项目,要么我得到的一行滚动到远远超出我的项目,直到右侧有空白空间。当我更改 minimumInteritemSpacing 的值时,我得到了这两个结果。有没有更好的方法?

我想要做的就是拥有动态数量的“按钮”或单元格(基于拉出的列表数量)和动态宽度(基于列表名称)并在一行中水平滚动。 每个带有列表名称的单元格都将像一个按钮一样,在被选中时使用列表的属性更新多个字段。

最佳答案

可以使用- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath方法来实现每个单元格的大小。

关于ios - 当项目具有动态大小时,如何在 Collection View 中有单个水平行的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42869093/

相关文章:

ios - 我在 UITableView 中添加了一个 View ,并且该 View 和第一个单元格之间存在间隙。我怎样才能删除它?

ios - 以编程方式生成 ppt 文件

ios - AVAudioSession setCategory .allowBluetooth导致崩溃

ios - UICollectionView 仅在用户双击时调用 didSelectItemAtIndexPath,当用户单击时不会调用

ios - 如何调用嵌入了UICollectionView的UITableViewCell的indexPath.row

ios - swift 4 : cannot subscript a value of type '[UIFontDesciptor.AttributeName : Any]' with an index of type 'String'

ios - SceneKit 与 Vuforia AR 库自定义模型

html - 使用 swift 进行 HTTP 发布。基本物联网应用程序

uigesturerecognizer - 双击 UICollectionView;需要单击才能失败

ios - 如何在 Swift 4 中的 View Controller 中将多个 uiview 拖动到另一个 uiview 或图像上