2016-03-02 106 views
1

我使用自动布局来确定单元格大小(固定为,变量高度)并在故事板中设置所有必要的约束条件。只要我不改变约束条件,Autolayout就可以正常工作。UICollectionView在更改约束条件后更新单元格

但在运行时我必须添加按钮到一些单元格。我删除最后一个标签的底部约束,插入按钮并向上面的标签添加一个约束,一个引导约束到单元格,另一个约束到单元格的底部。

问题是,在此之后单元大小不会更新。我试图在单元格和集合视图中调用LayoutIfNeeded,但这不起作用。我认为这些限制是正确的。该按钮出现在正确的位置,但单元格仅保持没有按钮的单元格的高度。我如何告诉CollectionView更新单元格大小?

+0

你试过'FUNC reloadItemsAtIndexPaths(indexPaths:[NSIndexPath])'? – hzwzw

+0

我试过了:一会儿细胞高度会更新到正确的时刻。但是,然后再次调用cellForItemAtIndexPath,单元高度重置并重新调用reloadItemsAtIndexPaths。它会导致无限的调整大小。 – Superwayne

+0

您在哪种方法中更改约束并添加按钮? –

回答

0

==>您可以使用UICollectionViewFlowLayout方法的itemSize属性来设置UICollectionViewCell大小,或者使用委托方法collectionView:layout:sizeForItemAtIndexPath:如果您需要动态设置UICollectionViewCells的大小。

+0

这是以前的方法(手动计算大小并使用sizeForItemAtIndexPath)。但现在它应该是布局本身。我设定的第一个约束条件很好(每个单元格都有它需要的大小)。但我无法告诉UICollectionView在单元中查找更改的约束。 对于UITableView我做了同样的事情。在运行时更新约束,然后调用beginUpdates,然后调用endUpdates。这导致tableview更新新约束的行高。我正在寻找类似于UICollectionView的东西。 – Superwayne

1

你可以参考下面的链接可能你可以得到你的答案手动和自动大小的UICollectionViewCell。

How make a collectionViewCell auto size only by height?

+0

这对我没有用,因为它没有使用自动布局。我之前在代码中做过高度计算,但这不是我的老板想要的。 – Superwayne

+0

该解决方案使用自动布局,否则collectionView单元格的子视图将无法正确显示。 –

+0

CollectionView没有任何像tableView拥有高度的概念--UITableViewAutomaticDimension,而不是它,CollectionView工作在UICollectionViewLayout的概念上。默认情况下,collectionView具有UICollectionViewFlowLayout。所以如果你不想使用sizeForItemAtIndexPath,那么你需要创建自定义布局。 –

相关问题