iOS SWSegmentBarController分段控制器

一个简易的选项卡镂空的分段控制器:
内部使用UICollectionView实现,可以计算出当前显示的控制器视图的下标,以及将要显示控制器视图的下标。底部选项红线随title宽度变化。

效果图

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView == self.contentCollectionView) {
        // 计算将要显示的控制器视图下标
        NSInteger contentOffset_x = (NSInteger)ABS(self.selectedIndex * scrollView.frame.size.width - scrollView.contentOffset.x);
        if (scrollView.contentOffset.x < self.selectedIndex * scrollView.frame.size.width) { // ←
            self.willSelectIndex = self.selectedIndex - ceil(contentOffset_x/scrollView.frame.size.width);
        }else { // →
            self.willSelectIndex = self.selectedIndex + ceil(contentOffset_x/scrollView.frame.size.width);
        }
        self.segmentBar.selectedItemContentOffset_x = scrollView.contentOffset.x;
        [NSObject cancelPreviousPerformRequestsWithTarget:self];
        [self performSelector:@selector(scrollViewDidEndScrollingAnimation:) withObject:self.contentCollectionView afterDelay:.1];
    }
}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
    if (scrollView == self.contentCollectionView) {
        [NSObject cancelPreviousPerformRequestsWithTarget:self];
        NSLog(@"scroll end");
        // 计算已经显示的控制器视图下标
        self.selectedIndex = (NSInteger)(scrollView.contentOffset.x / scrollView.frame.size.width);
        self.willSelectIndex = self.selectedIndex;
    }
}

demo地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,053评论 3 119
  • 连续两个晚上梦到世界末日, 地点是在小学和初中时的老房子里, 5层的公寓楼,我家在四楼,阳台窗台种满花草, 世界末...
    邵小七阅读 3,297评论 0 0
  • 今天是星期五,只要上两节课就可以了,中午代替林老师值班,在班里很和谐和学生们在一起,孩子们越来越可爱。 王潇同志的...
    佰洁桑阅读 1,711评论 0 1
  • 我是郑州大学北校区的一名大二学生,马上就要进入大三了,转眼间,大学已经过去了一半,我有一些话要说。 ...
    鱼毛阅读 4,082评论 0 0
  • 在我这个地方,你必须不停的奔跑,你才能留在原地。————《爱丽丝漫游奇境》 正如像上面这句话所描写的一样,我们现在...
    徐徐向上阅读 1,877评论 0 5

友情链接更多精彩内容