我有一个UICollectionView
。它以垂直方式渲染2个全屏单元。
我想以编程方式从一个单元格滚动到另一个单元格。
我目前正在通过触发此操作
UIView.animate(withDuration: 2) {
self.collectionView.scrollToItem(at: IndexPath(item: 1, section: 0), at: .centeredVertically, animated: false)
}
我以这种方式手动设置动画,因为scrollToItem
太快了。
问题是,当我触发此操作时,第一个单元格(正在滚动到屏幕之外的单元格)会失去其背景色。
奇怪的是,如果我只是从一个单元格滚动到另一个单元格,则不会发生这种情况。仅当我触发滚动时。
我的收藏夹视图是标准的,没什么特别的:
collectionViewLayout = UICollectionViewFlowLayout()
collectionViewLayout.scrollDirection = .vertical
collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewLayout)
collectionView.backgroundColor = .clear
collectionView.showsVerticalScrollIndicator = false
collectionView.showsHorizontalScrollIndicator = false
collectionView.bounces = false
collectionView.register(HomeCell.self, forCellWithReuseIdentifier: "home_cell")
collectionView.register(HeaderCell.self, forCellWithReuseIdentifier: "header_cell")
addSubview(collectionView)
collectionView.fill()
我的细胞也是基本的
class HeaderCell: UICollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .purple
}
required init?(coder aDecoder: NSCoder) {
return nil
}
}
class HomeCell: UICollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .red
}
required init?(coder aDecoder: NSCoder) {
return nil
}
}