我正在使用 XLPagerTabStrip 作为我的 ViewController 之一来显示布局。
我需要在所选单元格应仅位于中心的位置添加功能。为此,我添加buttonBarLeftContentInset
并buttonBarRightContentInset
在中心显示我的第一个单元格和在中心的最后一个单元格。但是当用户滚动到中心的任何项目
时,我想更改选择。buttonBarView
我可以创建自定义 FlowLayout,但在创建滚动问题时UICollectionView
实现该自定义流布局。buttonBarView
我按照以下线程在集合视图中实现对齐中心
注意:BaseButtonBarPagerTabStripViewController
由于buttonBarView
.
这是我之前设置的代码viewDidLoad()
override func viewDidLoad() {
let layoutMargins: CGFloat = buttonBarView.layoutMargins.left + buttonBarView.layoutMargins.right
let sideInset = (view.frame.size.width / 2.0) - layoutMargins
settings.style.buttonBarLeftContentInset = sideInset
settings.style.buttonBarRightContentInset = sideInset
settings.style.selectedBarBackgroundColor = UIColor.clear
settings.style.selectedBarHeight = 0
settings.style.buttonBarItemsShouldFillAvailableWidth = true
buttonBarItemSpec = ButtonBarItemSpec.nibFile(nibName: R.nib.episodeSnapshotCollectionViewCell.name, bundle: R.nib.episodeSnapshotCollectionViewCell.bundle, width: { (indicatorInfo) -> CGFloat in
return 56
})
changeCurrentIndexProgressive = { /*[weak self]*/ (oldCell: EpisodeSnapshotCollectionViewCell?, newCell: EpisodeSnapshotCollectionViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in
guard changeCurrentIndex == true else { return }
if animated {
UIView.animate(withDuration: animationDuration, animations: { () -> Void in
newCell?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
oldCell?.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
})
}
else {
newCell?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
oldCell?.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
}
}
buttonBarView.decelerationRate = .fast
super.viewDidLoad()
}