CollectionView在动画过程中切断单元格

时间:2019-03-21 21:20:02

标签: ios swift

因此,我有一个collectionView锚定到viewController内部的另一个子视图。橙色子视图固定在导航栏的底部,并且其高度和Alpha值得到动画显示。

动画后,collecitonView会在动画过程中向下移动。虽然,正如您将看到的,在动画播放之前,一些较低的单元格消失了,从而使其看起来不平滑和锯齿。

enter image description here

这是用于设置viewController子视图的函数:

private func setupSubviews() {
    view.addSubview(newMessageView)
    NSLayoutConstraint.activate([
        newMessageView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
        newMessageView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        newMessageView.trailingAnchor.constraint(equalTo: view.trailingAnchor)
        ])
    newMessageView.heightConstraint = newMessageView.heightAnchor.constraint(equalToConstant: 0)
    newMessageView.heightConstraint?.isActive = true


    view.addSubview(messagesCollectionView)
    messagesCollectionView.anchor(top: newMessageView.bottomAnchor, leading: view.leadingAnchor, bottom: view.bottomAnchor, trailing: view.trailingAnchor)
}

这是被调用的功能:

@objc func newMessage() {

toggleHeader = !toggleHeader

UIView.animate(withDuration: 1.0, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: {

    if (self.toggleHeader) {
        self.newMessageView.heightConstraint?.constant = 200
    } else {
        self.newMessageView.heightConstraint?.constant = 0
    }

    self.view.layoutIfNeeded()
})

}

我只是在更改我强加的heightConstraint。我相信这与didEndDisplaying函数有关,该函数检测到单元格不可见并将其切断。

我将如何改变或改善它?还是有办法阻止collectionView删除未显示的单元格?

谢谢

1 个答案:

答案 0 :(得分:0)

没关系。固定它。

将collectionView的底部锚点更改为view.safeAreaLayoutGuide.bottomAnchor。