為什么介紹的是 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
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
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
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
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
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ū)別钠四?
內部會根據標題文字內容以及按鈕之間的間距自動識別是靜止樣式還是滾動樣式;外界無需考慮