我正在使用UICollectionView来显示几个数据部分.这些部分具有固定数量的项目.我希望所有项目都以连续网格显示.
现在我以水平方向完成此任务:

但在纵向上,这留下了很大的差距:

我想解决各部分之间的这种差距,因为它很难看并且不属于那里.我很乐意使用自定义的FlowLayout,但是我找不到一个指向正确方向的教程(我发现了几个,但没有一个真正触及这个问题.)
任何人都可以帮我解决这个问题,或者至少指出我正确的方向?
PS:我已经实现了部分,因为我正在加载数据.目前使用1部分不是我的选择.
更新 请求我正在添加用于当前FlowLayout的值.我在全屏(减去UINavigationBar)UICollectionView上使用标准的水平流布局,每个部分有21个项目.
我想构建一个类似于网格的集合视图布局。和
我尝试使用集合流布局,但它开始变得复杂。构建自定义布局对我来说似乎是更好的选择。
我面临的一些问题:-
关于如何处理的任何想法,
谢谢 :)
我遇到一个问题,在我的UICollectionView中,我需要在返回的记录为0时显示一个页脚.下面的代码似乎工作正常,当没有记录时,会显示页脚.但是,有一个问题是,当有记录时,虽然页脚被隐藏,代码LINE 1似乎没有任何效果,这意味着页脚的空白区域仍然存在.知道怎么摆脱它吗?即将页脚高度更改为0,或者在返回记录时删除页脚.
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section {
    CGSize footerSize = CGSizeMake(320, self.view.frame.size.height);
    return footerSize;
  }
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    UICollectionReusableView *reusableview = nil;
    if (kind == UICollectionElementKindSectionFooter) {
        reusableview = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"FooterView" forIndexPath:indexPath];
        reusableview.hidden = YES;
        if([topicArray count]>0){
            reusableview.hidden = YES;
            //reusableview.frame = CGRectMake(0, 0, 0, 0);
            CGRect newFrame = reusableview.frame;
            newFrame.size.height =0;
            reusableview.frame = newFrame; // <-------- LINE 1.
        }else{
            reusableview.hidden = NO;
            reusableview.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
            UIImageView *oopsImgView =[[UIImageView …我在UICollectionView中有头(一个UICollectionReusableCell),其高度需要是可变的.我怎样才能根据其内容的高度调整自己的大小?
我并不需要支持的iOS 7,并自动布局的解决方案是优选的(如果存在的话).
在viewDidLoad我设置collectionViewLayout了UICollectionViewCell一个UILabel写着"加载内容......",当应用程序需要去抓取来自服务器的内容,但它确实是这样的:
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
...
// some configuration for the layout
// here it crash:
collectionView.setCollectionViewLayout(layout, animated: true)
它说这个消息崩溃了:
*由于未捕获的异常'NSRangeException'终止应用程序,原因:'* - [__ NSArrayM objectAtIndex:]:索引0超出空数组的边界'***第一次抛出调用堆栈:(0x24479b0b 0x23c36dff 0x2438a6d3 0x29275999 0x29271d13 0x29272aaf 0x28be537f 0x28be4667 0x1778dc 0x165f48 0x1661b8 0x16e774 0x16f038 0xf950c 0xf9174 0xdefb0 0xe1934 0xdf98c 0x52ed78 0x52d700 0x52bfc8 0x4df9c0 0x1531ba7 0x1531b93 0x1536659 0x2443b755 0x24439c4f 0x243881c9 0x24387fbd 0x259a4af9 0x28ac0435 0x131254 0x24034873)的libc ++ abi.dylib:与类型NSException的未捕获的异常终止
我所做的事情是将其collectionViewLayout替换为另一个.
我尝试通过invalidateLayout()重新加载或者不重新加载collectionView之前的布局来使布局无效,collectionViewLayout并且它仍然会崩溃.
我该怎么做才能collectionViewLayout …
我有一个支持集合视图的项目 ID 数组。当用户滚动浏览集合视图时,每个单元格都会获取该 ID 的对象,然后获取与该对象关联的图像。如果一个对象碰巧没有与之关联的图像,我想从数组中删除该项目 ID,然后更新屏幕上的集合视图。问题是有很多没有图像的对象(大量更新),我需要立即更新集合视图(没有时间动画)。
使用reloadData会导致集合视图在删除每个对象时闪烁。使用deleteItemsAtIndexPaths需要动画,这是不希望的。有什么方法可以从集合视图中删除项目而不使用动画吗reloadData?
我创建了一个水平集合视图,单个单元格显示在屏幕上.我尝试在每个单元格中预览另一个视图,当用户向上滑动时,单元格应扩展为全屏.我不知道如何解决这个问题?如何将单元格扩展为全屏动画?
objective-c ios uicollectionview uicollectionviewcell uicollectionviewlayout
我有一个水平集合视图,每个单元格都有自己的宽度。我使用默认的 UICollectionViewFlowLayout。重新排列时,单元格继承了它在此移动过程中覆盖的单元格的宽度,这是我不想要的。任何想法,如何避免这种行为?
我正在尝试以UICollectionViewLayout编程方式设置一个。我UICollectionView也在不使用故事板的情况下使用 a ,以及设置其约束。
我已经按照关于这个主题的Ray Wenderlich教程进行了一些更改以使代码适应 Swift 3(正如 AZCoder2 所做的那样https://github.com/AZCoder2/Pinterest)。
由于所有这些示例都使用故事板,因此我还引入了一些更改来创建UICollectionView及其UICollectionViewLayout:
collectionViewLayout = PinterestLayout()
collectionViewLayout.delegate = self
collectionView = UICollectionView.init(frame: .zero, collectionViewLayout: collectionViewLayout)
结果:我什么也看不到。如果我UICollectionViewLayout用 Apple 提供的 ( UICollectionViewFlowLayout)更改,至少我可以看到带有内容的单元格。如果我实施一些更改并使用故事板,一切都很好,但这不是我想要的方式。整个视图以编程方式制作,集合视图是其中的一部分。
我错过了什么?这与我实例化的方式有关UICollectionViewLayout吗?我是否必须注册某些东西(例如,因为我需要注册可重用单元)?
我目前正在UICollectionView用几个部分(假设是4个)实现一个,如下图所示:
从第0节到第2 UICollectionViewFlowLayout节,每个节的单元格大小都不同,但是对于第3节,这是自定义布局(瀑布布局)。
我已经实现了2种不同的布局,它们可以在单独的环境中很好地工作UICollectionView,但是我在同一个2种布局之间切换时遇到了一些麻烦UICollectionView。
首先,可以将布局从一个部分更改为另一个部分,如果这样的话,可以实现这一点。