UICollectionViewCell在滚动时失去背景色

时间:2019-06-24 13:12:22

标签: swift uicollectionview uicollectionviewcell uicollectionviewlayout

我有一个UICollectionView。它以垂直方式渲染2个全屏单元。

我想以编程方式从一个单元格滚动到另一个单元格。

我目前正在通过触发此操作

UIView.animate(withDuration: 2) {
    self.collectionView.scrollToItem(at: IndexPath(item: 1, section: 0), at: .centeredVertically, animated: false)
} 

我以这种方式手动设置动画,因为scrollToItem太快了。

问题是,当我触发此操作时,第一个单元格(正在滚动到屏幕之外的单元格)会失去其背景色。

enter image description here

奇怪的是,如果我只是从一个单元格滚动到另一个单元格,则不会发生这种情况。仅当我触发滚动时。

我的收藏夹视图是标准的,没什么特别的:

  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
    }
}

0 个答案:

没有答案