问题描述
我已经尝试了好几天才能产生这种效果:
突出显示的橙色矩形保持不变,并且整个集合滚动通过,而不是默认行为:这是突出显示的橙色矩形在单元格之间移动。
(这与轮播效果有点相似,但并不完全相同)
我在第一个系列中就做到了:
第一个单元格突出显示:
第二个单元格突出显示:
当您看到突出显示的橙色矩形时,整个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
也无法使用相同的效果:
像您一样,默认行为仍然会发生。 collection2View
仍然是固定的,突出显示的橙色矩形是移动的那个。
所以我在这里有两个问题:
问题1:是什么使firstCollection视图产生效果?
问题2:,即使我使用完全相同的代码,为什么对于第二个集合视图也不会产生相同的效果?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)