diff --git a/LUNSegmentedControl/LUNSegmentedControl/LUNSegmentedControl/LUNSegmentedControl.m b/LUNSegmentedControl/LUNSegmentedControl/LUNSegmentedControl/LUNSegmentedControl.m index cf71cac..8665028 100644 --- a/LUNSegmentedControl/LUNSegmentedControl/LUNSegmentedControl/LUNSegmentedControl.m +++ b/LUNSegmentedControl/LUNSegmentedControl/LUNSegmentedControl/LUNSegmentedControl.m @@ -32,6 +32,7 @@ @interface LUNSegmentedControl() *addedConstraintsToRemove; @property (nonatomic, assign) BOOL viewWasLayoutSubviews; @property (nonatomic, assign) BOOL layoutDependentValuesWasUpdated; +@property (nonatomic, assign) BOOL layoutAfterScrolling; @end @@ -68,9 +69,10 @@ - (void)layoutSubviews { [super layoutSubviews]; [self layoutIfNeeded]; self.viewWasLayoutSubviews = YES; - if (!self.layoutDependentValuesWasUpdated) { + if (!self.layoutDependentValuesWasUpdated || self.layoutAfterScrolling) { [self updateLayoutDependentValues]; } + self.layoutAfterScrolling = YES; } #pragma mark - Init defaults @@ -727,7 +729,10 @@ - (void)reloadData { } } - (void)updateLayoutDependentValues { + int state = self.currentState; self.currentState = 0; + self.currentState = self.statesCount-1; + self.currentState = state; self.layoutDependentValuesWasUpdated = YES; } @@ -787,6 +792,7 @@ - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { self.userInteractionEnabled = YES; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { + self.layoutAfterScrolling = NO; if ([self.delegate respondsToSelector:@selector(segmentedControl:didScrollWithXOffset:)]) { [self.delegate segmentedControl:self didScrollWithXOffset:self.frame.size.width - self.scrollView.contentOffset.x - self.selectorView.frame.size.width]; }