iOS SWSegmentBarController分段控制器

一個簡易的選項卡鏤空的分段控制器:
內(nèi)部使用UICollectionView實現(xiàn),可以計算出當(dāng)前顯示的控制器視圖的下標(biāo),以及將要顯示控制器視圖的下標(biāo)。底部選項紅線隨title寬度變化。

效果圖

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView == self.contentCollectionView) {
        // 計算將要顯示的控制器視圖下標(biāo)
        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");
        // 計算已經(jīng)顯示的控制器視圖下標(biāo)
        self.selectedIndex = (NSInteger)(scrollView.contentOffset.x / scrollView.frame.size.width);
        self.willSelectIndex = self.selectedIndex;
    }
}

demo地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,210評論 3 119
  • 連續(xù)兩個晚上夢到世界末日, 地點是在小學(xué)和初中時的老房子里, 5層的公寓樓,我家在四樓,陽臺窗臺種滿花草, 世界末...
    邵小七閱讀 535評論 0 0
  • 今天是星期五,只要上兩節(jié)課就可以了,中午代替林老師值班,在班里很和諧和學(xué)生們在一起,孩子們越來越可愛。 王瀟同志的...
    佰潔桑閱讀 291評論 0 1
  • 我是鄭州大學(xué)北校區(qū)的一名大二學(xué)生,馬上就要進(jìn)入大三了,轉(zhuǎn)眼間,大學(xué)已經(jīng)過去了一半,我有一些話要說。 ...
    魚毛閱讀 807評論 0 0
  • 在我這個地方,你必須不停的奔跑,你才能留在原地?!稅埯惤z漫游奇境》 正如像上面這句話所描寫的一樣,我們現(xiàn)在...
    徐徐向上閱讀 318評論 0 5

友情鏈接更多精彩內(nèi)容