WMZPageController - 分頁(yè)控制器,替換UIPageController方案,具備完整的生命周期(可傳入子控制器/子視圖,多種指示器樣式,多種標(biāo)題樣式,可懸浮,功能齊全,支持底部多級(jí)聯(lián)動(dòng),支持嵌套多個(gè)菜單多頁(yè)面
演示
動(dòng)畫樣式
動(dòng)畫樣式 | 作用 (默認(rèn)值) |
---|---|
AQY樣式 | AQY.gif
|
PDD樣式 | PDD.gif
|
TT樣式 | Toutiao.gif
|
JD樣式 | Jingdong.gif
|
QQ樣式 | QQ.gif
|
圓角框 | 圓角框 .gif
|
標(biāo)題樣式
標(biāo)題樣式 | 作用 (默認(rèn)值) |
---|---|
紅點(diǎn) | 紅點(diǎn).gif
|
富文本 | 富文本.gif
|
固定寬度 | 固定寬度.gif
|
圖文 | 帶圖片.gif
|
固定右邊 | |
自定義標(biāo)題樣式 | 自定義標(biāo)題樣式.gif
|
自定義導(dǎo)航欄 | 自定義導(dǎo)航欄.gif
|
懸浮樣式
懸浮樣式 | 作用 (默認(rèn)值) |
---|---|
懸浮導(dǎo)航欄透明度不變化+刷新在中間 | 懸浮導(dǎo)航欄透明度不變化.gif
|
懸浮導(dǎo)航欄透明度變化+刷新在頂部 | 懸浮導(dǎo)航欄透明度變化+刷新在頂部.gif
|
固定底部 | 固定底部.gif
|
頭部放大 | 頭部放大.gif
|
自定義復(fù)雜嵌套懸浮UI | 自定義復(fù)雜嵌套懸浮UI.gif
|
嵌套
樣式 | 作用 (默認(rèn)值) |
---|---|
wb | wb.gif
|
三層(王者營(yíng)地) | 三層.gif
|
雙重 | 雙重 .gif
|
頂?shù)舾覆藛?/td> | 頂?shù)舾覆藛?gif
|
特殊使用
樣式 | 作用 (默認(rèn)值) |
---|---|
作為tabbar使用 | tabbar.gif
|
淘寶首頁(yè)效果 | taobao.gif
|
美團(tuán)外賣商家詳情效果(子控制器多級(jí)聯(lián)動(dòng)) | meituan.gif
|
菜單標(biāo)題跟隨內(nèi)容滑動(dòng) | 菜單標(biāo)題跟隨內(nèi)容滑動(dòng).gif
|
特性
- 鏈?zhǔn)秸Z法 結(jié)構(gòu)優(yōu)雅
- 支持頂部懸浮
- 支持多種指示器樣式
- 支持富文本標(biāo)題
- 支持圖文混合標(biāo)題
- 支持完整的生命周期
- 替換系統(tǒng)UIPageController的方案,減少內(nèi)存,避免UIPageController的bug
- 支持傳入U(xiǎn)IView/UIViewController作為子視圖/子控制器
- 菜單欄可以單獨(dú)使用(詳情見Demo)
替換UIPageController是用UIScrollView替換,手勢(shì)滑動(dòng)從而實(shí)現(xiàn)完整生命周期
懸妇弧(子控制器/子視圖實(shí)現(xiàn)WMZPageProtocol協(xié)議)
/// 懸浮 兩者一樣 下面的只是為了減少非tableview的警告
- (UIScrollView*)getMyScrollView;
/// 懸浮 數(shù)組 可滾動(dòng)視圖的數(shù)組 適用底部多個(gè)scrollView的情況
- (NSArray <UIScrollView*>*)getMyScrollViews;
/// 子控制器需要固定的尾部視圖
- (UIView*)fixFooterView;
生命周期(子控制器/子視圖實(shí)現(xiàn)WMZPageProtocol協(xié)議)
傳入的是UIView
/// 生命周期 和VC的生命周期用法一致
- (void)pageViewWillAppear;
- (void)pageViewWillDisappear;
- (void)pageViewDidAppear;
- (void)pageViewDidDisappear;
傳入的是UIView傳入的是UIViewController
///系統(tǒng)生命周期方法
- (void)viewWillAppear:(BOOL)animated
- (void)viewDidAppear:(BOOL)animated
- (void)viewWillDisappear:(BOOL)animated
- (void)viewDidDisappear:(BOOL)animated
(兩者都會(huì)觸發(fā) 只實(shí)現(xiàn)一個(gè)即可)
- (void)pageViewWillAppear;
- (void)pageViewWillDisappear;
- (void)pageViewDidAppear;
- (void)pageViewDidDisappear;
用法
鏈?zhǔn)綄懛?(WMZPageParam內(nèi)含幾十種配置屬性)
WMZPageParam *param = PageParam()
.wTitleArrSet(@[@"推薦",@"LOOK直播",@"畫",@"現(xiàn)場(chǎng)",@"翻唱",@"MV",@"廣場(chǎng)",@"游戲"])
.wViewController = ^UIViewController * _Nullable(NSInteger index) {
return NSClassFromString(@"TestVC").new;
}
.wNaviAlphaSet(NO)
.wFromNaviSet(YES)
.wTopSuspensionSet(YES)
常規(guī)寫法
WMZPageParam *param = WMZPageParam.new;
param.wTitleArr = @[@"推薦",@"LOOK直播",@"畫",@"現(xiàn)場(chǎng)",@"翻唱",@"MV",@"廣場(chǎng)",@"游戲"]
param.wViewController = ^UIViewController * _Nullable(NSInteger index) {
return NSClassFromString(@"TestVC").new;
};
param.wTopSuspension = YES;
title傳入字典對(duì)應(yīng)的屬性
/// 例如
@[
@{WMZPageKeyName:@"標(biāo)題",WMZPageKeySelectName:@"選中標(biāo)題",WMZPageKeyBadge:@(YES)},
@{WMZPageKeyName:@"標(biāo)題",WMZPageKeySelectName:@"選中標(biāo)題",WMZPageKeyBadge:@(YES)}
@{WMZPageKeyName:@"標(biāo)題",WMZPageKeySelectName:@"選中標(biāo)題",WMZPageKeyBadge:@(YES)}
]
// 紅點(diǎn)提示 @(YES) 或者 帶數(shù)字 @(99) @"99+" wCustomRedView使用這個(gè)屬性可以調(diào)整角標(biāo)的位置和樣式
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyBadge;
/// 標(biāo)題 NSString/NSAttributedString 支持傳入富文本
/// 如果此處傳入富文本則WMZPageKeySelectName 也需要傳入 此時(shí)設(shè)置的選中標(biāo)題title font uicolor會(huì)失效
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyName;
/// 選中后標(biāo)題 NSString/NSAttributedString 支持傳入富文本
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeySelectName;
/// 指示器顏色 UIColor
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyIndicatorColor;
/// 字體顏色 UIColor
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyTitleColor;
/// 選中字體顏色 UIColor
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyTitleSelectColor;
/// 圖片 NSString/UIImage
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyImage;
/// 選中后圖片 NSString/UIImage
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeySelectImage;
/// 選中背景顏色 [UIColor redColor] (如果是數(shù)組則是背景色漸變色) @[[UIColor redColor],[UIColor orangeColor]]
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyBackgroundColor;
/// 標(biāo)題背景顏色 UIColor
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyTitleBackground;
/// 圖文距離 @(5)
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyImageOffset;
/// 僅點(diǎn)擊頁(yè)面不加載 @(YES)
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyOnlyClick;
/// 自定義標(biāo)題寬度(優(yōu)先級(jí)最高) @(100)
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyTitleWidth;
/// 自定義標(biāo)題高度(優(yōu)先級(jí)最高) @(100)
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyTitleHeight;
/// 自定義標(biāo)題x間距(優(yōu)先級(jí)最高) @(100)
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyTitleMarginX;
/// 自定義標(biāo)題y坐標(biāo)(優(yōu)先級(jí)最高) @(100)
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyTitleMarginY;
/// 當(dāng)前子控制器不懸浮固定在頂部 @(NO) NO表示不懸浮
FOUNDATION_EXPORT WMZPageBTNKey const WMZPageKeyCanTopSuspension;
param的配置屬性見Demo的WMZPageParam類
依賴
無任何依賴
安裝
CocoaPods
- 將 cocoapods 更新至最新版本.
- 在 Podfile 中添加
pod 'WMZPageController'
棠众。 - 執(zhí)行
pod install
或pod update
。 - 導(dǎo)入 #import "WMZPageController.h"康辑。
手動(dòng)安裝
- 下載 WMZPageController 文件夾內(nèi)的所有內(nèi)容。
- 將 WMZPageController 內(nèi)的源文件添加(拖放)到你的工程轿亮。
- 導(dǎo)入 #import "WMZPageController.h"
系統(tǒng)要求
該庫(kù)最低支持 iOS 9.0
和 Xcode 9.0
疮薇。