iphone - 在 iOS 上将 CollectionView Cells 紧紧地打包在一起?

标签 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

最佳答案

您必须使用 UICollectionViewFlowLayout 为达到这个

注意:以下信息来自Raywenderlich blog

你可以继承 UICollectionViewLayout 创建您自己的自定义布局,但 Apple 慷慨地为开发人员提供了一个基本的“基于流”的布局,称为 UICollectionViewLayout .它列出了元素根据它们的大小一个接一个 ,很像 GridView 。您可以开箱即用地使用此布局类,或将其子类化以获得一些有趣的行为和视觉效果。

您可以在 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); 
}

您可以实现的委托(delegate)方法比这更多。下面给出示例
collectionView:layout:sizeForItemAtIndexPath
collectionView:layout:insetForSectionAtIndex:

关于iphone - 在 iOS 上将 CollectionView Cells 紧紧地打包在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13411609/

相关文章:

iphone - 创建地址簿副本

iphone - 使用SocializeActionBar添加多个实体

ios - 在将 View Controller 设置为横向时在 App Delegate 中锁定纵向 View

iphone - AVAudioPlayer 重置当前播放的声音并从头开始播放

Objective-C 异步 http 请求

iphone - 异步方法、 block 和 GCD,难以理解

iphone - 在 iPhone 和 iPad 中实现 VOIP

ios - CoreData NSManagedObject 和 JSON Encodable 不工作

ios - Objective c中小时格式的倒数计时器

ios - [_UIWebViewScrollViewDelegateForwarder scrollViewWasRemoved :]: unrecognized selector sent to instance