【问题标题】:Pack CollectionViewCells tightly together on iOS?在 iOS 上将 CollectionViewCells 紧紧地打包在一起?
【发布时间】:2012-11-04 21:13:34
【问题描述】:

如果您想将单元格整齐地打包在一起,即使另一个单元格中的其他一些内容更大,如何做到这一点?

如果你看下图,第一串是最大的,但是如果我想像第一串一样整齐、紧密地把其他的细胞打包在一起,不管大小,这是怎么做的呢?

我想这样做,无论侧面和上下尺寸如何。 我希望按照这张图片中的箭头所指的方式布置单元格。

更新:第一行文本是两个单元格挤在一起。

【问题讨论】:

  • 您使用的是UICollectionViewFlowLayout吗?如果没有,您使用的是什么布局?
  • 我尝试过同时使用 collectionviewflowlayout 和我自己的子类 collectionviewflowlayout,这是一种自定义布局。但我就是做错了,我的猜测是我必须对流布局进行子类化,但我似乎无法让它工作。
  • 你能否提供代码来展示你如何实现你已经拥有的东西?这听起来是一件相对简单的事情。您是否在布局上设置了itemSize?

标签: iphone objective-c ios ios6 uicollectionview


【解决方案1】:

你必须使用 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:

【讨论】:

猜你喜欢
  • 2017-06-10
  • 2019-10-30
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
相关资源
最近更新 更多