最近遇到很吸引我的代碼幌缝,效果就是這種類似新聞APP的頂部滾動(dòng)菜單欄:
效果
功能
- 快速集成頂部菜單欄
- 拆分為SegementHead和SegmentScroll灭将,分別設(shè)置頭部視圖和下方滾動(dòng)視圖管闷。
- 使用NSCache統(tǒng)計(jì)頁面加載
樣式
//頭部樣式
typedef enum: NSUInteger{
/**
* 默認(rèn)
*/
SegmentHeadStyleDefault,
/**
* line(下劃線)
*/
SegmentHeadStyleLine,
/**
* arrow(箭頭)
*/
SegmentHeadStyleArrow,
/**
* slide(滑塊)
*/
SegmentHeadStyleSlide
}LGJSegmentHeadStyle;
/**
* 分割樣式遏考,默認(rèn)均分捂人,其他樣式按照標(biāo)題長度計(jì)算
*/
typedef enum: NSUInteger{
/**
* 默認(rèn)均分逐纬,根據(jù)maxTitles計(jì)算寬度蛔屹,均分
*/
LGJSegmentLayoutDefault,
/**
* 居中(標(biāo)題不足一屏?xí)r選擇樣式,反之設(shè)置后按照居左)
*/
LGJSegmentLayoutCenter,
/**
* 居左
*/
LGJSegmentLayoutLeft
} LGJSegmentLayoutStyle;
使用
- 將LGJSegmentPageView 拖入工程中
- 默認(rèn)設(shè)置
_segHead = [[LGJSegmentHead alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, 40) titles:list headStyle:_style layoutStyle:_layout];
_segHead.fontScale = 1.1;
_segHead.showIndex = 4;
_segScroll = [[LGJSegmentScroll alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(_segHead.frame), SCREEN_WIDTH, SCREEN_HEIGHT-CGRectGetMaxY(_segHead.frame)) vcOrViews:[self vcArr:list.count]];
_segScroll.loadAll = YES;
[LGJSegmentManager associateHead:_segHead withScroll:_segScroll completion:^{
[self.view addSubview:_segHead];
[self.view addSubview:_segScroll];
}];
滑動(dòng)中加載頁面
- 默認(rèn)設(shè)置為第一次進(jìn)入只加載當(dāng)前顯示的頁面豁生,即
segScroll.loadAll = NO;
- 默認(rèn)滑動(dòng)過程中最大緩存頁面是所有頁面即
segScroll.countLimit = vcsOrviews.count;
即segScroll.loadAll = YES;
自定義菜單欄樣式
/**
* 選擇狀態(tài)下的顏色兔毒,完全自定義樣式下可不設(shè)置
*/
@property (nonatomic, strong) UIColor *selectColor;
/**
* 未選中狀態(tài)下的顏色,完全自定義樣式下可不設(shè)置
*/
@property (nonatomic, strong) UIColor *deSelectColor;
/**
* 字體的大小甸箱,完全自定義樣式下可不設(shè)置
*/
@property (nonatomic, assign) CGFloat fontSize;
/**
* 選中狀態(tài)的縮放比例育叁,segmentHeadStyleSlide風(fēng)格下此屬性無用,設(shè)置縮放比例滑動(dòng)過程中會(huì)有相應(yīng)動(dòng)畫
*/
@property (nonatomic, assign) CGFloat fontScale;
其他樣式設(shè)置
/**
* 下劃線的顏色
*/
@property (nonatomic, strong) UIColor *lineColor;
/**
* 下劃線高度
*/
@property (nonatomic, assign) CGFloat lineHeight;
/**
* 下劃線相對(duì)于正常狀態(tài)下的百分比 默認(rèn)為1
*/
@property (nonatomic, assign) CGFloat lineScale;
/*------------箭頭風(fēng)格------------*/
/**
* 箭頭的顏色
*/
@property (nonatomic, strong) UIColor *arrowColor;
/*------------滑塊風(fēng)格------------*/
/**
* 滑塊的顏色
*/
@property (nonatomic, strong) UIColor *slideColor;
/**
* 滑塊的高度
*/
@property (nonatomic, assign) CGFloat slideHeight;
/**
* 滑塊的圓角大小
*/
@property (nonatomic, assign) CGFloat slideCorner;
/**
* 滑塊相對(duì)于正常狀態(tài)下的百分比芍殖,默認(rèn)為1
*/
@property (nonatomic, assign) CGFloat slideScale;
/**
* 頂部導(dǎo)航欄下方的邊線
*/
@property (nonatomic, assign) CGFloat bottomLineHeight;
@property (nonatomic, strong) UIColor *bottomLineColor;
其余用法見代碼詳情
這個(gè)是我看見別人的寫的感覺效果挺好的豪嗽,而且思路很清晰,然后我自己對(duì)照著手敲了以便加深領(lǐng)會(huì)豌骏,想學(xué)一下人家的思想龟梦,也是作為自己的技術(shù)積累,不得不說原作者的思路真的是不錯(cuò)窃躲,我也是還沒有完全理解计贰,還是要多向原作者學(xué)習(xí),在這里放上代碼鏈接蒂窒。(侵權(quán)刪)
LGJSegmentHeaderView
原作者地址:
https://github.com/MengLiMing
https://github.com/MengLiMing/MLMSegmentPage.git