我有一个 collectionview,我试图在每行上做 2 个单元格。看起来它正在从我的原型(prototype)单元格构建单元格并将所有内容正确居中。然后它运行我的 sizeForItemAtIndexPath 并使大小调整正确(每行 2 个单元格),但是所有标签都偏离了之前放置的中心。
我一直在搞 invalidateLayout 和 viewDidLayoutSubviews 但似乎没有任何效果。任何想法如何在运行 sizeForItemAtIndexPath 后强制单元格重新布局标签?提前致谢。
编辑: 这是两张图片。 这是第一个图像 sizeForItemAtIndexPath 被注释掉,单元格中的所有内容都格式化完美,但间距关闭: 这是第二个,使用 sizeForItemAtIndexPath 使 collectionView 具有适当的间距。这是对齐在单元格内困惑的地方,而不是居中。
最佳答案
我有过 contentView
在我的单元格中更改为与 collectionView(_:layout:sizeForItemAtIndexPath:) 中的不同大小时无法正确调整大小的经历。将单元格出队后尝试添加以下内容:
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath)
cell.contentView.frame = cell.bounds
cell.contentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
如果您正在使用 UICollectionViewCell
的自定义子类,您可以将该代码放在 awakeFromNib()
的重写中:
override func awakeFromNib() {
super.awakeFromNib()
contentView.frame = cell.bounds
contentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
}
关于ios - 一旦具有适当的大小,如何重新布局 CollectionView 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33266881/