重新加载后,具有自动调整单元格大小的收集视图停止工作

时间:2018-12-11 11:52:38

标签: ios swift uicollectionview uicollectionviewflowlayout

在我的应用中,我有一个集合视图,其中的单元格水平自动调整。 这是一些代码:

// called in viewDidLoad()

private func setupCollectionView() {
    let cellNib = UINib(nibName: SomeCell.nibName, bundle: nil)
    collectionView.register(cellNib, forCellWithReuseIdentifier: SomeCell.reuseIdentifier)

    guard let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout else { return }

    flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
    flowLayout.itemSize = UICollectionViewFlowLayout.automaticSize
}

单元格具有1个视图,该视图具有高度约束。此视图子视图一个标签,该标签限制为2行且不受宽度限制。这里的想法是允许标签在2行中计算其自己的宽度适合文本。

为了完成这项工作,我在单元格类中添加了以下代码:

override func awakeFromNib() {
    super.awakeFromNib()

    contentView.translatesAutoresizingMaskIntoConstraints = false

    contentView.leftAnchor.constraint(equalTo: leftAnchor).isActive = true
    contentView.rightAnchor.constraint(equalTo: rightAnchor).isActive = true
    contentView.topAnchor.constraint(equalTo: topAnchor).isActive = true
    contentView.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true
}

现在,它可以完美运行了。单元格为autosizng,scrollView为水平滚动等。直到我至少调用一次reloadData()为止。然后,单元格的尺寸为50x50,在我离开屏幕并再次返回之前,再也不会自动调整尺寸了。

您对为什么会发生有任何想法吗?

0 个答案:

没有答案