0

我正在使用 XLPagerTabStrip 作为我的 ViewController 之一来显示布局。
我需要在所选单元格应仅位于中心的位置添加功能。为此,我添加buttonBarLeftContentInsetbuttonBarRightContentInset在中心显示我的第一个单元格和在中心的最后一个单元格。但是当用户滚动到中心的任何项目
时,我想更改选择。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()
}
4

0 回答 0