iOS之QQ音樂、騰訊新聞岭接、網易新聞富拗、今日頭條等頂部標題滾動視圖

為什么介紹的是 v1.3.0 版本?

此次版本相對之前的版本是一次版本升級變化鸣戴,API 的可拓展性更高一點啃沪,主要是開放了按鈕之間的間距自定義,指示器長度自定義窄锅,標題文字大小自定義创千;之前的版本都是寫在內部,外界是無法修改的入偷,限制其拓展性追驴;為什么會這樣?因為盯串,內部控件是在初始化方法中創(chuàng)建的氯檐,一些屬性已經被限制死了;當時考慮過這個問題体捏,但并沒有去做修改,此次版本升級是因為 SGPagingView 已經有一年的時間了糯崎,且代碼的穩(wěn)定性較高几缭,功能也是在大家的反饋中不斷完善

與之前的版本有什么不同?先看一下結構圖
SGPagingView結構圖.png

本次升級添加了 SGPageTitleViewConfigure 類沃呢;為什么這么做年栓?就是前面提到部分屬性是 SGPageTitlView.m 內部屬性,外界是無法修改的薄霜,限制了 SGPagingView 拓展性某抓;為什么添加 SGPageTitleViewConfigure 類纸兔?這個還要得益于 WKWebView,WKWebView 擁有自己的配置信息否副;當時在想汉矿,把 SGPageTitlView.h 頭文件中的部分屬性以及 SGPageTitlView.m 中的部分屬性,提取出來放到一個配置信息中备禀,在初始化 SGPageTltleView 之前進行信息配置洲拇,這樣 SGPageTitleView 的可拓展性會比之前更靈活且減少了 SGPageTitlView.h 頭文件內的屬性,讓 SGPageTitlView.h 看起來更清晰明了曲尸,所以進行了一次版本升級

SGPagingView 介紹

遮蓋樣式赋续,此次版本才支持

gif1.gif

SGPageTitleViewConfigure *configure = [SGPageTitleViewConfigure pageTitleViewConfigure];
configure.titleSelectedColor = [UIColor whiteColor];
configure.indicatorStyle = SGIndicatorStyleCover; // 指示器樣式,默認下劃線樣式
configure.indicatorColor = [UIColor blackColor]; // 指示器顏色
configure.indicatorAdditionalWidth = 20; // 說明:指示器額外增加的寬度另患,默認為0纽乱;如若不設置,指示器寬度為標題文字寬度昆箕;若設置無限大鸦列,則指示器寬度為按鈕寬度
configure.indicatorCornerRadius = 30; // 說明:指示器的圓角屬性,默認為0为严,遮蓋樣才會起作用敛熬;若設置的圓角大于指示器高度的1/2,則指示器的圓角大小為指示器高度的1/2

self.pageTitleView = [SGPageTitleView pageTitleViewWithFrame:frame delegate:self titleNames:titleNames configure:configure];
[self.view addSubview:_pageTitleView];

下劃線樣式

gif2.gif

SGPageTitleViewConfigure *configure = [SGPageTitleViewConfigure pageTitleViewConfigure];
configure.indicatorScrollStyle = SGIndicatorScrollStyleHalf; // 指示器滾動樣式第股,分3種应民;此處是內容滾動一半時指示器位置改變
configure.titleFont = [UIFont systemFontOfSize:12]; // 標題字號配置,默認 15

self.pageTitleView = [SGPageTitleView pageTitleViewWithFrame:frame delegate:self titleNames:titleNames configure:configure];
_pageTitleView.selectedIndex = 1; // 選中下標
_pageTitleView.isTitleGradientEffect = NO; // 是否需要標題漸變效果
[self.view addSubview:_pageTitleView];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    // 根據下表重置標題文字內容
    [_pageTitleView resetTitleWithIndex:1 newTitle:@"等待已結束"];
});

下劃線樣式夕吻,滾動完成加載子視圖

gif3.gif

NSArray *titleNames = @[@"精選", @"電影", @"OC", @"Swift"];
SGPageTitleViewConfigure *configure = [SGPageTitleViewConfigure pageTitleViewConfigure];
configure.indicatorAdditionalWidth = 120; // 這里的指示器額外增加的寬度隨便設置的诲锹,大于按鈕的寬度,內部會處理為按鈕的寬度的
configure.indicatorScrollStyle = SGIndicatorScrollStyleEnd; // 前面已經介紹過了涉馅,指示器滾動樣式归园,此處是內容滾動結束時指示器位置改變

self.pageTitleView = [SGPageTitleView pageTitleViewWithFrame:frame delegate:self titleNames: titleNames configure:configure];
_pageTitleView.isTitleGradientEffect = NO;
[self.view addSubview:_pageTitleView];

// 這里要介紹一下,看到目錄結構里面 SGPageContent 分為  SGPageContentView 和 SGPageContentScrollView稚矿;SGPageContentView 內部是 UICollectionView 實現的庸诱,而 SGPageContentScrollView 內部是 UIScrollView 實現的,是視圖加載完成之后加載子視圖的晤揣。具體區(qū)別可以查看源碼
self.pageContentScrollView = [[SGPageContentScrollView alloc] initWithFrame:frame parentVC:self childVCs:childVCs];
_pageContentScrollView.delegatePageContentScrollView = self;
[self.view addSubview:_pageContentScrollView];

下劃線滾動樣式

gif3.gif

SGPageTitleViewConfigure *configure = [SGPageTitleViewConfigure pageTitleViewConfigure];
configure.indicatorAdditionalWidth = 10;

self.pageTitleView = [SGPageTitleView pageTitleViewWithFrame:frame delegate:self titleNames:titleNames configure:configure];
[self.view addSubview:_pageTitleView];

文字縮放

gif5.gif

SGPageTitleViewConfigure *configure = [SGPageTitleViewConfigure pageTitleViewConfigure];

self.pageTitleView = [SGPageTitleView pageTitleViewWithFrame:frame delegate:self titleNames:titleNames configure:configure];
_pageTitleView.isShowIndicator = NO; // 是否顯示指示器桥爽,默認為 YES
_pageTitleView.isOpenTitleTextZoom = YES; // 是否打開標題文字縮放,默認為 NO
[self.view addSubview:_pageTitleView];

最后提供一個小小案例昧识,僅作參考

gif6.gif

關于靜止樣式與滾動樣式的區(qū)別钠四?

內部會根據標題文字內容以及按鈕之間的間距自動識別是靜止樣式還是滾動樣式;外界無需考慮

此文展示的只是部分簡介跪楞;如需了解更多缀去,請參考代碼以及 GitHub 介紹

GitHub地址

附言:喜歡的朋友記得點個贊喔

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末侣灶,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子缕碎,更是在濱河造成了極大的恐慌褥影,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阎曹,死亡現場離奇詭異伪阶,居然都是意外死亡,警方通過查閱死者的電腦和手機处嫌,發(fā)現死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門栅贴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人熏迹,你說我怎么就攤上這事檐薯。” “怎么了注暗?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵坛缕,是天一觀的道長。 經常有香客問我捆昏,道長赚楚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任骗卜,我火速辦了婚禮宠页,結果婚禮上,老公的妹妹穿的比我還像新娘寇仓。我一直安慰自己举户,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布遍烦。 她就那樣靜靜地躺著俭嘁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪服猪。 梳的紋絲不亂的頭發(fā)上供填,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音罢猪,去河邊找鬼捕虽。 笑死,一個胖子當著我的面吹牛坡脐,可吹牛的內容都是我干的。 我是一名探鬼主播房揭,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼备闲,長吁一口氣:“原來是場噩夢啊……” “哼晌端!你這毒婦竟也來了?” 一聲冷哼從身側響起恬砂,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咧纠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后泻骤,有當地人在樹林里發(fā)現了一具尸體漆羔,經...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年狱掂,在試婚紗的時候發(fā)現自己被綠了演痒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡趋惨,死狀恐怖鸟顺,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情器虾,我是刑警寧澤讯嫂,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站兆沙,受9級特大地震影響欧芽,放射性物質發(fā)生泄漏。R本人自食惡果不足惜葛圃,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一千扔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧装悲,春花似錦昏鹃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至属瓣,卻和暖如春载迄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抡蛙。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工护昧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粗截。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓惋耙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绽榛,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內容