iOS 具備完整生命周期的PageController

WMZPageController - 分頁(yè)控制器,替換UIPageController方案,具備完整的生命周期(可傳入子控制器/子視圖,多種指示器樣式,多種標(biāo)題樣式,可懸浮,功能齊全,支持底部多級(jí)聯(lián)動(dòng),支持嵌套多個(gè)菜單多頁(yè)面

GitHub地址

演示

動(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

  1. 將 cocoapods 更新至最新版本.
  2. 在 Podfile 中添加 pod 'WMZPageController'棠众。
  3. 執(zhí)行 pod installpod update
  4. 導(dǎo)入 #import "WMZPageController.h"康辑。

手動(dòng)安裝

  1. 下載 WMZPageController 文件夾內(nèi)的所有內(nèi)容。
  2. 將 WMZPageController 內(nèi)的源文件添加(拖放)到你的工程轿亮。
  3. 導(dǎo)入 #import "WMZPageController.h"

系統(tǒng)要求

該庫(kù)最低支持 iOS 9.0Xcode 9.0疮薇。

WMZPageController

其他介紹

WMZDropDowmMenu(能實(shí)現(xiàn)任意菜單篩選的控件,你想要的菜單篩選功能一一俱全)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市我注,隨后出現(xiàn)的幾起案子按咒,更是在濱河造成了極大的恐慌,老刑警劉巖但骨,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件励七,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡奔缠,警方通過查閱死者的電腦和手機(jī)掠抬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來校哎,“玉大人两波,你說我怎么就攤上這事瞳步。” “怎么了腰奋?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵奏窑,是天一觀的道長(zhǎng)轿腺。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么扁凛? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮蔚润,結(jié)果婚禮上训貌,老公的妹妹穿的比我還像新娘。我一直安慰自己锐想,他們只是感情好帮寻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赠摇,像睡著了一般固逗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上藕帜,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天烫罩,我揣著相機(jī)與錄音,去河邊找鬼洽故。 笑死贝攒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的时甚。 我是一名探鬼主播隘弊,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼荒适!你這毒婦竟也來了梨熙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤刀诬,失蹤者是張志新(化名)和其女友劉穎咽扇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陕壹,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡质欲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糠馆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘶伟。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖又碌,靈堂內(nèi)的尸體忽然破棺而出奋早,到底是詐尸還是另有隱情盛霎,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布耽装,位于F島的核電站愤炸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏掉奄。R本人自食惡果不足惜规个,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姓建。 院中可真熱鬧诞仓,春花似錦、人聲如沸速兔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涣狗。三九已至谍婉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間镀钓,已是汗流浹背穗熬。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丁溅,地道東北人唤蔗。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像窟赏,于是被迫代替她去往敵國(guó)和親妓柜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353