HMSegmentedControl是一个比较常用的分段控制器;然而他的指示器不支持动态滑动,只能是滑动到下一页后,再滑过去。这样和关联的ScrollView的页面滑动不同步,体验不是太好。
当然自己写一个也不会太难,只是不想重复造轮子,喜欢站在巨人的肩膀上;简而言之,偷懒。。。
于是在HMSegmentedControl基础上开始操刀;想要指示器同步滚动,必然要知道ScrollView滑动情况,简单点,直接上KVO,监听ScrollView的contentOffset值的变化
- (void)setPageScrollView:(UIScrollView *)scrollView {
_pageScrollView = scrollView;
[_pageScrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];
}
提醒自己不要忘了removeObserver,"Crash"~好怕怕!
当滑动ScrollView的时候,observeValueForKeyPath会被调用
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
if (object == _pageScrollView && [keyPath isEqualToString:@"contentOffset"]) {
[self pageScrollViewContentOffset:_pag