pujiaxin33 / JXSegmentedView

A powerful and easy to use segmented view (segmentedcontrol, pagingview, pagerview, pagecontrol, categoryview) (腾讯新闻、今日头条、QQ音乐、网易云音乐、京东、爱奇艺、腾讯视频、淘宝、天猫、简书、微博等所有主流APP分类切换滚动视图)
MIT License
2.71k stars 373 forks source link

请问如何在percent>0.5时,如何提前进行segmentedView定位到中心的动画 #83

Closed iamjjh closed 4 years ago

iamjjh commented 4 years ago
open override func refreshItemModel(_ segmentedView: JXSegmentedView, leftItemModel: JXSegmentedBaseItemModel, rightItemModel: JXSegmentedBaseItemModel, percent: CGFloat) {
    super.refreshItemModel(segmentedView, leftItemModel: leftItemModel, rightItemModel: rightItemModel, percent: percent)

    guard let leftModel = leftItemModel as? DDSegmentedTitleImageItemModel, let rightModel = rightItemModel as? DDSegmentedTitleImageItemModel else {
        return
    }
    if isImageZoomEnabled && isItemTransitionEnabled {
        leftModel.imageCurrentZoomScale = JXSegmentedViewTool.interpolate(from: imageSelectedZoomScale, to: 1, percent: CGFloat(percent))
        rightModel.imageCurrentZoomScale = JXSegmentedViewTool.interpolate(from: 1, to: imageSelectedZoomScale, percent: CGFloat(percent))
    }
    // 提前定位到中心
    let willScrollIndex = percent > 0.5 ? rightItemModel.index : leftItemModel.index
    segmentedView.collectionView.scrollToItem(at: IndexPath(item: willScrollIndex, section: 0), at: .centeredHorizontally, animated: true)
}

默认效果感觉定位到中心的动画和整个滚动的动画是割裂的,希望达到类似类似腾讯视频的效果。暂时是这么处理的,请问有更好的方法吗?