Swift:将相同的UICollectionViewFlowLayout与两个集合视图一起使用会对每个collectionView产生不同的效果

问题描述

我在 tvOS应用中拥有这两个集合视图:

enter image description here

我已经尝试了好几天才能产生这种效果
突出显示的橙色矩形保持不变,并且整个集合滚动通过,而不是认行为:这是突出显示的橙色矩形在单元格之间移动。
(这与轮播效果有点相似,但并不完全相同)

我在第一个系列中就做到了:
一个单元格突出显示

enter image description here

第二个单元格突出显示

enter image description here

当您看到突出显示的橙色矩形时,整个collectionView 滚动时,它会留在原处。

我已经通过反复试验实现了这一点,说实话,我仍然不明白它是如何工作或为什么会工作的。
这是UICollectionViewFlowLayout的配置,它使我得以实现:

class CarouselFlowLayout: UICollectionViewFlowLayout {
    
    override init() {
        super.init()
        scrollDirection = .horizontal
        minimumLinespacing = 40
        minimumInteritemSpacing = 20
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func prepare() {
        guard let collectionView = collectionView else { fatalError() }
        let verticalInsets = (collectionView.frame.height - collectionView.adjustedContentInset.top - collectionView.adjustedContentInset.bottom - itemSize.height) / 2
        let leftInsets = CGFloat(0)
        let rightInsets = (collectionView.frame.width - itemSize.width)
        print("rightInsets: ",rightInsets ) //1536.0
        sectionInset = UIEdgeInsets(top: verticalInsets,left:leftInsets,bottom: verticalInsets,right: rightInsets)
        super.prepare()
    }
}

将其添加collectionView中的方式:

private func setupCollectionViewItemSize2(){
    let flowLayout = CarouselFlowLayout()
    collectionView.collectionViewLayout = flowLayout
    let flowLayout2 = CarouselFlowLayout()
    collection2View.collectionViewLayout = flowLayout2
}

问题是,即使我使用完全相同的代码,第二个集合collection2View也无法使用相同的效果

enter image description here

enter image description here

像您一样,认行为仍然会发生。 collection2View仍然是固定的,突出显示的橙色矩形是移动的那个。
所以我在这里有两个问题:
问题1:是什么使firstCollection视图产生效果
问题2:,即使我使用完全相同的代码,为什么对于第二个集合视图也不会产生相同的效果

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)