From 75b7424d3f11eec8e8ac75ab5cb8f3fbd4337120 Mon Sep 17 00:00:00 2001 From: Jack Date: Wed, 14 Jan 2015 18:59:36 +0800 Subject: [PATCH 1/3] Add property control current page update action. --- .../XLPagerTabStripViewController.h | 2 ++ .../XLPagerTabStripViewController.m | 20 ++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h index 0fcd8a5..be8e859 100644 --- a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h +++ b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h @@ -82,6 +82,8 @@ typedef NS_ENUM(NSUInteger, XLPagerTabStripDirection) { @property (readonly) NSUInteger currentIndex; @property BOOL skipIntermediateViewControllers; +// When user scroll the pager, waiting did end decelerating update page index, Default is NO. +@property BOOL shouldDidEndDeceleratingUpdatePage; -(void)moveToViewControllerAtIndex:(NSUInteger)index; -(void)moveToViewController:(UIViewController *)viewController; diff --git a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m index 03ec878..9898e09 100644 --- a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m +++ b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m @@ -71,6 +71,7 @@ _dataSource = self; _lastContentOffset = 0.0f; _skipIntermediateViewControllers = YES; + _shouldDidEndDeceleratingUpdatePage = NO; } - (void)viewDidLoad @@ -212,13 +213,20 @@ return fmodf(self.containerView.contentOffset.x, [self pageWidth]) / [self pageWidth]; } +- (void)updateCurrentPage +{ + NSUInteger currentPage = [self pageForContentOffset:self.containerView.contentOffset.x]; + if (currentPage != self.currentIndex){ + self.currentIndex = currentPage; + } +} + -(void)updateContent { NSArray * childViewControllers = self.pagerTabStripChildViewControllers; self.containerView.contentSize = CGSizeMake(CGRectGetWidth(self.containerView.bounds) * childViewControllers.count, self.containerView.contentSize.height); - NSUInteger currentPage = [self pageForContentOffset:self.containerView.contentOffset.x]; - if (currentPage != self.currentIndex){ - self.currentIndex = currentPage; + if (!self.shouldDidEndDeceleratingUpdatePage) { + [self updateCurrentPage]; } [childViewControllers enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { @@ -296,6 +304,12 @@ } } +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + if (self.shouldDidEndDeceleratingUpdatePage) { + [self updateCurrentPage]; + } +} + -(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { if (self.containerView == scrollView && _originalPagerTabStripChildViewControllers){ From 4d61cc82f6220bde586ece810f0af1fd786044aa Mon Sep 17 00:00:00 2001 From: Jack Date: Wed, 13 May 2015 23:11:17 +0800 Subject: [PATCH 2/3] Add two public method --- XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h | 2 ++ XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m | 3 +++ 2 files changed, 5 insertions(+) diff --git a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h index c1c8bd0..6162892 100644 --- a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h +++ b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h @@ -93,7 +93,9 @@ typedef NS_ENUM(NSUInteger, XLPagerTabStripDirection) { @property BOOL isElasticIndicatorLimit; -(void)moveToViewControllerAtIndex:(NSUInteger)index; +-(void)moveToViewControllerAtIndex:(NSUInteger)index animated:(bool)animated; -(void)moveToViewController:(UIViewController *)viewController; +-(void)moveToViewController:(UIViewController *)viewController animated:(bool)animated; -(void)reloadPagerTabStripView; @end diff --git a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m index c9180b0..9109df9 100644 --- a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m +++ b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m @@ -166,6 +166,9 @@ [self moveToViewControllerAtIndex:[self.pagerTabStripChildViewControllers indexOfObject:viewController]]; } +-(void)moveToViewController:(UIViewController *)viewController animated:(bool)animated { + [self moveToViewControllerAtIndex:[self.pagerTabStripChildViewControllers indexOfObject:viewController] animated:animated]; +} #pragma mark - XLPagerTabStripViewControllerDelegate From 146a25e37164b8575a541ddb149c93e340fa8876 Mon Sep 17 00:00:00 2001 From: Jack Date: Wed, 27 May 2015 17:24:11 +0800 Subject: [PATCH 3/3] fix the not update for viewDidAppear --- .../XL/Controllers/XLPagerTabStripViewController.m | 7 ------- 1 file changed, 7 deletions(-) diff --git a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m index c0e1339..6bb0840 100644 --- a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m +++ b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m @@ -98,13 +98,6 @@ } } --(void)viewWillAppear:(BOOL)animated -{ - [super viewWillAppear:animated]; - _lastSize = self.containerView.bounds.size; -} - - -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated];