因此,我有一个collectionView锚定到viewController内部的另一个子视图。橙色子视图固定在导航栏的底部,并且其高度和Alpha值得到动画显示。
动画后,collecitonView会在动画过程中向下移动。虽然,正如您将看到的,在动画播放之前,一些较低的单元格消失了,从而使其看起来不平滑和锯齿。
这是用于设置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删除未显示的单元格?
谢谢
答案 0 :(得分:0)
没关系。固定它。
将collectionView的底部锚点更改为view.safeAreaLayoutGuide.bottomAnchor。