Tag: uicollectionviewlayout

横向取消UICollectionViewCells

我有一个问题,用stream布局和方向来pipe理我的UICollectionsView。 基本上,当我切换到横向时发生问题,一些UICollectionViewCells丢失。 一旦我开始滚动,它们就会重新出现。 它应该能够显示所有的单元格,因为contentSize有更多的空间。 我什至试图在我的布局: – (BOOL) shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds { return YES; } 有了同样的结果。 任何人有任何想法在这个问题上? 我包含了一个关于如何组织布局和预期行为的图像: 要添加更多的细节,每个颜色编码单元格属于它自己的部分,我正在移动我的第二部分向右方向变化使用: – (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect { NSArray* attributesToReturn = [super layoutAttributesForElementsInRect:rect]; for (UICollectionViewLayoutAttributes* attributes in attributesToReturn) { NSIndexPath* indexPath = attributes.indexPath; if (nil == attributes.representedElementKind) { attributes.frame = [self layoutAttributesForItemAtIndexPath:indexPath].frame; } else { NSString *kind = attributes.representedElementKind; attributes.frame = [self layoutAttributesForSupplementaryViewOfKind:kind […]

为什么UICollectionView与UICollectionViewFlowLayout不显示单元格,但要求大小?

为什么使用stream布局的collectionview有时不显示单元格,但是代表请求的大小,以及部分项目数和响应者提供正确的信息。 这里的例子,6节的麻烦 2015-04-08 04:43:59.020 ASKED SECTION:0 ITEMS:0 2015-04-08 04:43:59.023 RETUR SECTION:0 ITEMS:1 2015-04-08 04:43:59.023 ASKED SECTION:1 ITEMS:0 2015-04-08 04:43:59.024 RETUR SECTION:1 ITEMS:1 2015-04-08 04:43:59.024 ASKED SECTION:2 ITEMS:0 2015-04-08 04:43:59.024 RETUR SECTION:2 ITEMS:1 2015-04-08 04:43:59.024 ASKED SECTION:3 ITEMS:0 2015-04-08 04:43:59.024 RETUR SECTION:3 ITEMS:1 2015-04-08 04:43:59.025 ASKED SECTION:4 ITEMS:0 2015-04-08 04:43:59.043 RETUR SECTION:4 ITEMS:0 2015-04-08 04:43:59.043 ASKED […]

UICollectionView自定义水平分页布局

[![collectionview example] [1]] [1] 我正在尝试使用集合视图模拟此行为。 我已经开始使用这种方法,并使我更接近。 虽然当我在水平分页CollectionView上进一步向右滑动时,内容会进一步向左移动。 单元之间的间隔也是closures的。 我相信它需要一个自定义的布局,但我不确定。 func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { return CGSize(width: collectionView.frame.width – 20, height: collectionView.frame.height – 20) }

如何获得UICollectionView的矩形

我想在UICollectionView中find节标题的框架。 对于UITableView我有类似的情况,为此,我可以通过下面的方法得到它的结果: CGRect rect = [self.tableView rectForHeaderInSection:section]; 有没有办法在UICollectionView中获得相同的结果? 谢谢!

UICollectionView垂直居中

我有一个UICollectionView对象的大小(320,500)。 我需要创build一个内容垂直居中的UICollectionView 。 意思是说,如果内容的总大小是(100,100),那么单元格应该绘制自己的矩形(0,200):(320,300)。 即在50以上,在垂直中心以下250以下50。 问题是单元的数量和单元的大小只在运行时决定。 例如,如果在单元格中的文本可以是1行的大小〜(100,50)。 如果是4行大小将是〜(100,200)。 所以只有在我运行了collectionView:sizeForItemAtIndexPath:之后,才能确定最后一个单元格应该是第一个单元格的起始位置。 任何开始的build议我应该如何处理这个问题。 即使我Flowlayout了Flowlayout ,在绘制最后一个单元格之前,我将如何知道第一个单元格的位置?

控制UICollectionViewController中单元格之间的间隙

我的细胞似乎有20点的差距,我想控制这个价值,但每一个我发现关于这个问题的答案是行不通的。 我试过了: func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { return 0 } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { return 0 } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { return UIEdgeInsets.zero } 没有任何有用的输出,还: layout.minimumLineSpacing = 0 layout.minimumInteritemSpacing […]

如何在didselect上展开collectionview单元以显示更多信息?

我想animation我的collectionview单元格,以便当我触摸它时,一个mapview从它下面滑出,基本上通过将它下面的单元格向下推动,扩展到空间中。 我尝试使用这个: UICollectionView:animation单元大小更改select ,但无法让它正常工作。 在这里,我试过。 – (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { [((FeedCell *)[collectionView cellForItemAtIndexPath:indexPath]) setIsSelected:YES]; [collectionView.collectionViewLayout invalidateLayout]; __weak FeedCell *cell = (FeedCell *)[self.photoCollectionView cellForItemAtIndexPath:indexPath]; // Avoid retain cycles void (^animateChangeWidth)() = ^() { CGRect frame = cell.frame; frame.size = CGSizeMake(frame.size.width, 420); cell.frame = frame; }; // Animate [UIView transitionWithView:[collectionView cellForItemAtIndexPath:indexPath] duration:0.5f options: UIViewAnimationOptionCurveLinear animations:animateChangeWidth completion:nil]; […]

UICollectionView单元格,自动布局和collectionview布局的变化

我有一个集合视图,显示单元格看起来像一个经典的表格视图与图像,标题和副标题。 我希望能够将布局切换为仅显示图像的网格,连续3个。 集合视图单元格的内容被放置在具有自动布局的故事板中。 imageView有以下限制: 引导0到左边的单元格边缘 顶部0到顶部小区边缘 底部0到底部细胞边缘 固定宽度 标签的水平空间 在更改布局之后,imageView应该对容器的所有边都有零约束,以便它完全填充它。 目前,当我改变布局的应用程序崩溃Unable to simultaneously satisfy constraints. 。 什么是最好的方式来解决布局改变时的约束,甚至可能取代单元格类?

用附加控件注释UICollectionViewselect的devise

使用UICollectionView和在这里给出的StackOverflow的优秀帮助,我已经能够为我的iPhone构build一个“甘特图”风格控制: 除了化妆品(我现在正在做function,我有一个graphicsdevise师可以看看颜色和所有这些)。 除了背景之外,使用自定义UICollectionViewLayout子类的跨度相对比较简单。 每个跨度是一个item 。 但是我需要添加一些function,并且不确定如何继续。 我试图去的地方大致如下: 撇开粗略的化妆品,重点是我想“注释”,无论目前select的跨度与额外的信息(我保证找人帮我看起来很漂亮)。 而且我希望它们是活跃的,我不确定它是否会引起编辑控制或拖动,但是我希望能够识别数字或粗线上的手势,并且使用它们进行操作,与触摸不同驱动select的跨度。 我可以想到(至less)3种方式来尝试和实现这个: 使用补充意见。 导致selectinvalidateLayout ,在我的prepareLayout检测选中的状态,并为两个锚点生成额外的布局属性。 实现绘制UICollectionReusableView的子类,并添加可触摸的子视图(或其自己的手势识别器)。 这感觉…错了。 我认为补充视图更多的是页眉和页脚,而不是随着select状态的变化而出现的控件。 但也许这是该设施的适当扩展? 使用我当前的SpanCell类(它是UICollectionViewCell一个子类)的backgroundView (或selectedBackgroundView ,不知道它的问题)。 只要我禁用clipsToBounds ,我可以绘制围绕bounds的注释。 我将不得不透露一些大局的知识以find终点,但那不是太冒犯。 我只是显示/隐藏这个视图来响应select的改变。 这似乎是最好的办法。 在整个UICollectionView的主backgroundView中进行。 如图所示,我已经有了一个专门的backgroundView ,它显示了当前的时间网格,条forms。 我可以进一步扩展这个视图来绘制注释和pipe理可触摸的子控件来响应select的改变。 这会给我最直接的实现,但感觉就像一个巨大的怪物“为了背景做了太多的工作”。 问题是,对于那些有更多经验的人,你会走哪条路? 会不会是以上3个之一? 或者不同的东西? 为什么?

UICollection View在较小的设备上导致“UICollectionViewFlowLayoutBreakForInvalidSizes”

在iPhone 6 Plus上,收集视图单元格很好,但是当在另一个像iPhone 5的设备上testing时,我被“ 017-06-15 01:59:25.744 HyperTest [3865:8825385] UICollectionViewFlowLayout的行为未定义,因为:2017-06-15 01:59:25.744 HyperTest [3865:8825385]项目宽度必须小于UICollectionView的宽度减去左侧和右侧的值,减去内容左右值。 2017-06-15 01:59:25.745 HyperTest [3865:8825385]相关的UICollectionViewFlowLayout实例是,它被连接到; 层=; contentOffset:{0,0}; contentSize:{414,219}>集合视图布局:。 2017-06-15 01:59:25.745 HyperTest [3865:8825385]在UICollectionViewFlowLayoutBreakForInvalidSizes中创build一个符号断点,以便在debugging器中捕获这个断点。 特别是当我这样做: let layout = billFeedCollectionView.collectionViewLayout as? UICollectionViewFlowLayout // casting is required because UICollectionViewLayout doesn't offer header pin. It's feature of UICollectionViewFlowLayout layout?.sectionHeadersPinToVisibleBounds = true layout?.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize 反正我可以解决这个问题? 我需要确保细胞适应所有设备。