commit
6c1cc20c9f
|
|
@ -266,7 +266,7 @@ open class ButtonBarPagerTabStripViewController: PagerTabStripViewController, Pa
|
|||
return cells
|
||||
}
|
||||
|
||||
// MARK: - UICollectionViewDelegateFlowLayut
|
||||
// MARK: - UICollectionViewDelegateFlowLayout
|
||||
|
||||
open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
|
||||
guard let cellWidthValue = cachedCellWidths?[indexPath.row] else {
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
|
|||
|
||||
open private(set) var viewControllers = [UIViewController]()
|
||||
open private(set) var currentIndex = 0
|
||||
open private(set) var preCurrentIndex = 0 // used *only* to store the index to which move when the pager becomes visible
|
||||
|
||||
open var pageWidth: CGFloat {
|
||||
return containerView.bounds.width
|
||||
|
|
@ -123,6 +124,10 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
|
|||
super.viewDidAppear(animated)
|
||||
lastSize = containerView.bounds.size
|
||||
updateIfNeeded()
|
||||
let needToUpdateCurrentChild = preCurrentIndex != currentIndex
|
||||
if needToUpdateCurrentChild {
|
||||
moveToViewController(at: preCurrentIndex)
|
||||
}
|
||||
isViewAppearing = false
|
||||
childViewControllers.forEach { $0.endAppearanceTransition() }
|
||||
}
|
||||
|
|
@ -148,9 +153,10 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
|
|||
|
||||
open func moveToViewController(at index: Int, animated: Bool = true) {
|
||||
guard isViewLoaded && view.window != nil && currentIndex != index else {
|
||||
currentIndex = index
|
||||
preCurrentIndex = index
|
||||
return
|
||||
}
|
||||
|
||||
if animated && pagerBehaviour.skipIntermediateViewControllers && abs(currentIndex - index) > 1 {
|
||||
var tmpViewControllers = viewControllers
|
||||
let currentChildVC = viewControllers[currentIndex]
|
||||
|
|
@ -268,6 +274,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
|
|||
let virtualPage = virtualPageFor(contentOffset: containerView.contentOffset.x)
|
||||
let newCurrentIndex = pageFor(virtualPage: virtualPage)
|
||||
currentIndex = newCurrentIndex
|
||||
preCurrentIndex = currentIndex
|
||||
let changeCurrentIndex = newCurrentIndex != oldCurrentIndex
|
||||
|
||||
if let progressiveDeledate = self as? PagerTabStripIsProgressiveDelegate, pagerBehaviour.isProgressiveIndicator {
|
||||
|
|
@ -296,6 +303,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
|
|||
if currentIndex >= viewControllers.count {
|
||||
currentIndex = viewControllers.count - 1
|
||||
}
|
||||
preCurrentIndex = currentIndex
|
||||
containerView.contentOffset = CGPoint(x: pageOffsetForChild(at: currentIndex), y: 0)
|
||||
updateContent()
|
||||
}
|
||||
|
|
@ -333,6 +341,7 @@ open class PagerTabStripViewController: UIViewController, UIScrollViewDelegate {
|
|||
guard let me = self else { return }
|
||||
me.isViewRotating = false
|
||||
me.currentIndex = me.pageBeforeRotate
|
||||
me.preCurrentIndex = me.currentIndex
|
||||
me.updateIfNeeded()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue