分頁SPPageMenu


改進版本在demo中Example

https://github.com/sundayios/SPPageMenuCenterLine.git

1.標題之間添加分割線 可設置分割線到邊界距離 設置分割線顏色

self.dataArr = @[@"生活aaa",@"影視中心",@"交通aaa",@"電視劇",@"搞笑",@"綜藝"];

 

    SPPageMenu *pageMenu = [SPPageMenu pageMenuWithFrame:CGRectMake(0, NaviH, screenW, pageMenuH) trackerStyle:SPPageMenuTrackerStyleRect];

    //設置帶標題的按鈕,圖片有幾種狀態,

    //在有三種狀態下,第三態可設置是否隱蹤指示器

    //在此移動可顯示指示器

    pageMenu.itemIconStatesNumber = SPItemIconStatesNumberOne;

    pageMenu.hiddenBoomLineAtThirdState = true;

    pageMenu.unSelectedItemTitleColor = [UIColor grayColor];

    pageMenu.selectedItemTitleColor = [UIColor greenColor];

    //設置跟蹤器高 寬

    pageMenu.trackerHeight = 1;

    pageMenu.trackerWidth = [UIScreen mainScreen].bounds.size.width / 4.0;

    // 傳遞數組,默認選中第1個

    [pageMenu setItems:self.dataArr selectedItemIndex:0];

    // 指定第1個item為圖片aaa

    [pageMenu setImage:[UIImage imageNamed:@"Expression_1"] forItemAtIndex:0];

    // 指定第2個item同時含有圖片和文字,圖片在上

    SPPageMenuButtonItem *item1 = [SPPageMenuButtonItem itemWithNorTitle:@"nor" selTitle:@"sel" norImage:[UIImage imageNamed:@"Expression_1"] selImage:[UIImage imageNamed:@"Expression_2"] thirdImage:[UIImage imageNamed:@"Expression_3"] imagePosition:SPItemImagePositionRight];

    

    item1.imagePosition = SPItemImagePositionRight;

    [pageMenu setItem:item1 forItemAtIndex:1];

    // 指定第4個item同時含有圖片和文字,圖片在右

    SPPageMenuButtonItem *item2 = [SPPageMenuButtonItem itemWithTitle:@"歌曲" image:[UIImage imageNamed:@"asc"] imagePosition:SPItemImagePositionRight];

    [pageMenu setItem:item2 forItemAtIndex:3];

    pageMenu.delegate = self;

    //設置顯示標題間分割線

    pageMenu.spaceLineColor = [UIColor greenColor];

    //設置標題間分割線到邊界距離

    pageMenu.spaceLineMargin = 8;

 

 

 

 

 

GitHub     https://github.com/SPStore/SPPageMenu

http://www.code4app.com/thread-31385-1-1.html

目錄

  • 如何安裝
  • 部分功能演示圖
  • 重難點講解
  • 使用者提問

 

如何安裝

 

版本3.5.0

target 'MyApp' do

  pod 'SPPageMenu', '~> 3.5.0'

end

 

說明:3.5.0版本在3.4.5版本的基礎上改動如下:

1、新增7個API

* - (void)setContent:(id)content forItemAtIndex:(NSUInteger)itemIndex;

* - (void)setCustomSpacing:(CGFloat)spacing afterItemAtIndex:(NSUInteger)itemIndex;

* - (CGFloat)customSpacingAfterItemAtIndex:(NSUInteger)itemIndex;

* - (CGRect)titleRectRelativeToPageMenuForItemAtIndex:(NSUInteger)itemIndex; 

* - (CGRect)imageRectRelativeToPageMenuForItemAtIndex:(NSUInteger)itemIndex; 

* - (CGRect)buttonRectRelativeToPageMenuForItemAtIndex:(NSUInteger)itemIndex; 

* - (void)addComponentViewInScrollView:(UIView *)componentView; 

2、在不可滑動自適應內容的排列方式下,設置間距依然生效

3、修復設置指定item寬度和內間距失效問題

4、修復多次對bridgeScrollView賦值上一個KVO觀察者未移除問題

 

版本3.4.5

target 'MyApp' do

  pod 'SPPageMenu', '~> 3.4.5'

end

 

說明:3.4.5版本在3.4.4版本的基礎上修復了先設置unSelectedItemTitleFont,再設置items文字顯示不全問題

 

 

部分功能演示圖

(友情提示:如果您的網絡較慢,gif圖可能會延遲加載,您可以先把寶貴的時間瀏覽其它信息)

3006981-889f087b55f3e57f.gif

 

重難點講解

// 該屬性是選中的按鈕下標,大家可以通過這個屬性判斷選擇了第幾個按鈕,如果改變其值,可以用於切換選中的按鈕

 

@property (nonatomic) NSInteger selectedItemIndex; 

// 這個scrollView是外界傳進來的scrollView,通常的案例都是在pageMenu的下方有若干個子控制器在切換,子控制器的切換由滑動

scrollView實現,使用者只需要把該scrollView傳給bridgeScrollView,SPPageMenu框架內部會監聽該scrollView的橫向滾動,實

現了讓跟蹤器時刻跟隨該scrollView滾動的效果。暫時不支持監聽垂直方向的滾動,如果你的scrollVeiw要垂直滾動實現切換按鈕,你

不妨可以嘗試自己在-scrollViewDidScroll:代理方法中設置selectedItemIndex的值

 

@property (nonatomic, strong) UIScrollView *bridgeScrollView;

// 排列方式:支持3種排列方式;1、可滑動,按鈕寬度根據內容自適應;2、不可滑動,按鈕等寬;3、不可滑動,按鈕寬度根據內容自

適應。3種排列方式都有非常高的使用頻率。第1種排列方式:SPPageMene的容量會根據按鈕個數而定;第2種和第3種排列方式:SPPageMenu

的容量固定為SPPageMenu的寬度

 

@property (nonatomic, assign) SPPageMenuPermutationWay permutationWay; 

// 跟蹤器跟蹤模式;這個屬性從3.4版本開始閃亮登場。該屬性是個枚舉,共3個:1、SPPageMenuTrackerFollowingModeAlways,這個

枚舉值的意思是讓跟蹤器時刻跟隨外界scrollView(即bridgeScrollView)橫向移動; 2、SPPageMenuTrackerFollowingModeEnd,這個

枚舉的意思是當外界scrollView滑動結束時,跟蹤器才開始移動;相當於3.4版本之前的closeTrackerFollowingMode屬性 3、

SPPageMenuTrackerFollowingModeHalf,這個枚舉的意思是當外界scrollView拖動距離超過屏幕一半時,跟蹤器開始移動。

 

@property (nonatomic, assign) SPPageMenuTrackerFollowingMode trackerFollowingMode;

// 內容的四周內邊距(內容不包括分割線),默認UIEdgeInsetsZero;這個屬性是個驚喜,往往能做到一些你意想不到的事情。假如你的

SPPageMenu控件高度固定不變,想要設置跟蹤器與按鈕之間的垂直間距變小,就可以設置該屬性的top和bottom值,讓SPPageMenu的

內容在垂直方向上內縮

 

@property (nonatomic, assign) UIEdgeInsets contentInset; 

// 該方法的效果和屬性bridgeScrollView功能一致,如果外界想通過該方法實現跟蹤器時刻跟隨scrollView移動,可以在代理方法

-scrollViewDidScroll:中調用該方法,如果方法和屬性同時實現,屬性優先級更高

 

- (void)moveTrackerFollowScrollView:(UIScrollView *)scrollView;

// 代理方法:若以下2個代理方法同時實現了,只會走第2個代理方法(第2個代理方法包含了第1個代理方法的功能)

// 代理方法何時觸發?代理方法有2種方式會觸發,第一種是點擊了SPPageMenu的按鈕,這種方式無論點擊的按鈕是否同一個都會觸發;

第二種是由滑動外界scrollView而觸發,當跟蹤模式為SPPageMenuTrackerFollowingModeAlways和SPPageMenuTrackerFollowingModeEnd

時,滑動scrollView結束的時候觸發地代理方法,當跟蹤器的跟蹤模式為SPPageMenuTrackerFollowingModeHalf時,滑動scrollView

超過一半時就會觸發代理方法

 

- (void)pageMenu:(SPPageMenu *)pageMenu itemSelectedAtIndex:(NSInteger)index;

- (void)pageMenu:(SPPageMenu *)pageMenu itemSelectedFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex;

 

想了解更多使用細節,大家可以把demo下載到本地,里面有非常多的示例以及詳細的注釋

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM