Tag: uicollectionviewlayout

如何获得UICollectionView标头的索引path?

使用视图的indexPathForItemAtPoint,我将得到一个单元格的索引path,但从来没有一个UICollectionReusableView(header / footer) – 因为它总是返回nil。

UICollectionViewFlowLayout Voice Over使用Flow Layout按顺序读取项目

我有两个问题关于可访问性和UICollectionViews,我希望得到一些专家的帮助。 另一个问题,关于节标题,可以在这里find。 我已经创build了一个示例项目来演示这两个问题。 我有一个UICollectionView使用UICollectionViewFlowLayout包含可变高度的项目。 UIFlowLayout将每行的元素垂直居中。 不幸的是,当启用Voice Over时,它似乎倾向于垂直放置较高的元素,导致它无序地读取项目。 您可以拉这个示例项目 ,运行它,启用声音,并通过项目滑动看到问题。 它创build具有随机高度的单元格,所以很可能会按顺序读取单元格。 有没有一种方法可以使收集视图顺序通过项目? 我觉得这是唯一有道理的方法,但是我找不到一个强制执行的方法。 设置集合视图来分组子视图似乎没有帮助。 任何帮助将不胜感激。

collectionViewContentSize()与contentSize

有什么区别 collectionViewController.collectionViewLayout.collectionViewContentSize()和collectionViewController.collectionView.contentSize ? 你喜欢用什么?

如何在Scroll上设置UICollectionViewCell的大小,使其中间最大?

我有一个UICollectionView显示几行与一个全宽列(看起来像一个UITableView) 我想达到的是类似于这样的: …中间的细胞有更高的高度。 当用户向上和向下滚动时,中间单元格之前和之后的单元格animation回到给定单元格的默认高度。 有人可以概述我应该如何解决这个问题?

UICollectionView水平页面之间的空间分页

我正在寻找一种方法来取代UIPageViewController本地UIPageViewController水平分页。 到目前为止我做了以下几点: let layout = UICollectionViewFlowLayout() layout.scrollDirection = .horizontal layout.itemSize = collectionView.frame.size layout.minimumLineSpacing = 0 layout.minimumInteritemSpacing = 10 collectionView.setCollectionViewLayout(layout, animated: false) collectionView.isPagingEnabled = true collectionView.alwaysBounceVertical = false 这工作正常,我得到一个水平分页效果。 现在我想在页面之间添加水平空间(就像你将UIPageViewControllerOptionInterPageSpacingKey上的UIPageViewController ) 到目前为止,我不能罚款的方式来添加空间而不损坏分页效果。 即时通讯寻找与UIPageViewController相同的行为:单元格应填充整个屏幕宽度,单元格之间的空间应该只在切换页面时可见。

如何正确插入或删除UICollectionView补充视图

简短的问题: 有没有一种方法来添加和删除类似于insertItemsAtIndexPaths: deleteItemsAtIndexPaths:或甚至reloadItemsAtIndexPaths:方法的performBatchUpdates:块中的单元格和部分的补充视图? 长解释: 我使用UICollectionView与部分。 单元格像网格一样布置,每行最多可以有6个单元格。 如果单元的总数不填满某个部分的所有行,我将添加其他补充视图。 额外的补充意见只是填补了空白。 所以结果应该是每个部分完全填充所有可用的单元格,并且(可能的)剩余空白点填充补充视图。 所以每行有6个视觉元素,一个单元格或一个补充视图。 为了实现这一点,我实现了一个自定义的UICollectionViewFlowLayout基于布局与以下prepareLayout:实现: – (void)prepareLayout { [super prepareLayout]; self.supplementaryViewAttributeList = [NSMutableArray array]; if(self.collectionView != nil) { // calculate layout values CGFloat contentWidth = self.collectionViewContentSize.width – self.sectionInset.left – self.sectionInset.right; CGFloat cellSizeWithSpacing = self.itemSize.width + self.minimumInteritemSpacing; NSInteger numberOfItemsPerLine = floor(contentWidth / cellSizeWithSpacing); CGFloat realInterItemSpacing = (contentWidth – (numberOfItemsPerLine * […]

停止单个UICollectionView单元stream动到屏幕的中心

我想了解为什么集合视图保持中心只alignment集合中的最后一个单元格。 我创build了一个简单的基于stream布局的集合视图。 我使用的Autolayout标志 – 我不知道是造成这个问题。 每当我从收集视图中删除一个单元格 – 前几个似乎正常工作,滚到左侧。 但是,当我删除倒数第二个,然后突然最后一个单元格从左alignment更改为中心alignment。 有没有人有解释? 这似乎很奇怪。 我如何做到这一点,以便所有单元格将向左滚动并保持与左侧alignment。 编辑:这里是视图层次debugging: http : //imgur.com/a/NxidO 这是视图行为 我做了一个简单的github来演示它: https : //github.com/grantkemp/CollectionViewIssue 这里是代码: var dataforCV = ["short","longer phrase", "Super long Phrase"] override func viewDidLoad() { super.viewDidLoad() demoCollectionView.reloadData() let layout = UICollectionViewFlowLayout() // Bug Description – > UICollectionViewFlowLayoutAutomaticSize will center Align the layout if it has only […]

layoutAttributesForSupplementaryViewOfKind:atIndexPath:传入不正确的indexPath

我有一个自定义的UICollectionViewLayout ,它使用补充视图在每个页面的底部放置一个页脚。 这似乎一直工作,直到我开始在页面的底部插入单元格。 由于补充视图必须链接到UICollectionView中的NSIndexPath,因此在准备布局方法中,我检测页面上的最后一个单元格,然后将补充视图的layoutAttributes存储到页面上的最后一个indexPath。 这是插入新单元格之前的集合视图布局: |- Page 1 |– [0, 0] |– [0, 1] |– [0, 2] |- Footer (indexPath [0, 2]) |- Page 2 |– [1, 0] |– [1, 1] |- Footer (indexPath [1, 1]) 正如所料,我的prepareLayout方法创build和存储UICollectionViewLayoutAttributespath[0, 2]和[1, 1] [0, 2] UICollectionViewLayoutAttributes。 layoutAttributesForSupplementaryViewOfKind:atIndexPath:方法也被调用两次,返回indexPaths( [0, 2]和[1, 1] )的正确属性 现在的问题是,当我在索引[1, 2]处插入新的单元格时[1, 2] prepareLayout方法正确地重新计算布局,并像预期的那样将第二个页脚的indexPath更改为[1, 2] 。 但是,当再次调用layoutAttributesForSupplementaryViewOfKind:atIndexPath:来更新接口时,其indexPath属性仍然返回[1, 1] […]

UICollectionViewFlowLayout的行和列

给定一个具有stream布局的UICollectionView ,计算集合视图的列数(垂直方向)或行数(水平方向)的最简单方法是什么?

在UICollectionView中滚动2 – 3次后,单元格消失

我在滚动我的UICollectionView一个奇怪的问题。 它显示一个没有任何单元格的空白视图。 它奇怪地隐藏我的细胞或删除我的细胞,我不知道,但我无法find任何解决scheme。 我已经尝试从这些解决scheme: 第一:试图创build自定义类的UICollectionViewFlowLayout并按照指示与所有不同的方法,但无法解决我的问题。 第二:尝试下面的方法重新分配和重新计算我的单元格大小: -(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds { return YES; } 我跟随的链接: Que1: UICollectionView的单元格消失 Que2: 使用我自己的UICollectionViewFlowLayout子类滚动时,UICollectionView项目消失 请指导我什么是错误的与自定义单元格简单collectionview。 参考图片: 滚动之前: 滚动后: