Pack CollectionViewCells在iOS上紧密结合在一起?

时间:2012-11-16 06:32:22

标签: iphone objective-c ios ios6 uicollectionview

如果你想整齐地将细胞打包在一起,即使另一个细胞中的其他一些内容更大,那怎么办呢?

如果你看下面的图片,第一个字符串是最大的,但是如果我想将其他单元格整齐地紧密地包装在一起,不管它的大小如何,这是怎么做的?

无论是从侧面还是向上和向下,无论尺寸如何,我都希望这样做。 我希望细胞布局,因为这张照片中的箭头指向。

更新:第一行文本是两个单元格打包到。

ONE CELL WITH STRING PACKED NEATLY TOGETHER, AND THE OTHER ARE FAR AWAY FROM EACH OTHER, THIS IS BECAUSE THE FIRST STRING IS THE LONGEST

1 个答案:

答案 0 :(得分:0)

您必须使用 UICollectionViewFlowLayout 来实现此目标

注意:以下信息来自Raywenderlich blog

您可以继承 UICollectionViewLayout 来创建自己的自定义布局,但Apple慷慨地为开发人员提供了一个名为 UICollectionViewLayout 的基本“基于流的”布局。它根据大小一个接一个地放置元素,非常像网格视图。您可以开箱即用这个布局类,或者将其子类化以获得一些有趣的行为和视觉效果。

您可以在Raywenderlich blog

中看到一个很好的例子

示例代码:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    NSString *searchTerm = self.searches[indexPath.section]; FlickrPhoto *photo =
    self.searchResults[searchTerm][indexPath.row];

    CGSize retval = photo.thumbnail.size.width > 0 ? photo.thumbnail.size : CGSizeMake(100, 100);
    retval.height += 35; retval.width += 35; return retval;
}


- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
    return UIEdgeInsetsMake(50, 20, 50, 20); 
}

您可以实现比此更多的委托方法。示例如下:

collectionView:layout:sizeForItemAtIndexPath
collectionView:layout:insetForSectionAtIndex: