手機版 | wap版 | 網站主頁 | HOME | 3G網頁
<button id="bgjis"><acronym id="bgjis"></acronym></button>

<dd id="bgjis"></dd>
<button id="bgjis"></button>
      1. <progress id="bgjis"></progress>
        <tbody id="bgjis"><track id="bgjis"></track></tbody>
        <em id="bgjis"><tr id="bgjis"></tr></em>

        靈活輕量的自定義導航欄,輕鬆實現【導航欄漸變、摺疊...

        [複製鏈接]
        來自: 李兆祥 分類: iOS精品源碼 上傳時間: 2020-3-13 18:44:53
        Tag:

        項目介紹:

        ZXNavigationBar

        github:http://github.com/SmileZXLee/ZXNavigationBar

        安裝

        通過CocoaPods安裝

        pod 'ZXNavigationBar'

        或手動導入

        • 將ZXNavigationBar拖入項目中。

        導入頭文件

        #import "ZXNavigationBarController.h"

        功能&特點

        • [x] 每個控制器單獨管理自己的導航欄,導航欄屬於各個子控制器,不再屬於統一的導航控制器

        • [x] 兼容iOS8-iOS13,兼容各種設備,且無需擔心繫統更新需要重新適配導航欄

        • [x] 僅需一行代碼即可輕鬆控制各種效果

        • [x] 支持隨時切換為系統導航欄,且與系統導航欄之間無縫銜接

        • [x] 支持在ZXNavigationBar上自定義titleView

        • [x] 若ZXNavigationBar自帶效果都無法滿足,支持自定義導航欄

        • [x] 若從Xib中載入控制器,添加子View無需手動設置距離導航欄頂部約束,ZXNavigationBar會自動處理

        效果預覽

        導航欄設置仿微博熱搜效果自定義導航欄
        自定義titleView切換系統導航欄可伸縮式導航欄

        開始使用

        將控制器繼承於ZXNavigationBarController,建議將Base控制器繼承於ZXNavigationBarController

        @interface DemoBaseViewController : ZXNavigationBarController
        
        @end

        注意:ZXNavigationBar會自動顯示返回按鈕,且實現點擊pop功能,您無需設置,若需要自定義返回按鈕,直接覆蓋self.zx_navLeftBtn的圖片和點擊回調即可

        關於自定義導航欄view內容無法自動下移的處理方式

        • 如果是系統的導航欄,view的內容會自動下移,如64像素

        • 設置了自定義的導航欄,它實際上就是普通的View,則view中的內容不會自動下移以避免擋住導航欄

        • ZXNavigationBar的處理方法是:

        • 如果您是通過frame或者Masonry設置控制項布局,請設置y距離頂部高度為導航欄高度,可直接使用ZXNavBarHeight這個宏

        • 如果您是通過Xib載入控制器,則ZXNavigationBar會自動將內部約束設置為距離頂部為導航欄高度+原始高度,您無需作任何處理

        • 若您是通過Xib載入控制器,且禁用了SafeArea,請設置:

        //若大多數控制器都從Xib載入並禁用了SafeArea,可以直接在Base控制器中設置
        self.zx_isEnableSafeArea = NO;

        導航欄設置

        設置導航欄標題

        self.title = @"ZXNavigationBar";

        self.zx_navTitle = @"ZXNavigationBar";

        設置導航欄標題顏色

        self.zx_navTitleLabel.textColor = @"ZXNavigationBar";

        設置導航欄標題字體大小

        self.zx_navTitleLabel.fontSize = [UIFont systemFontOfSize:20];
        • 設置導航欄標題其他屬性,通過控制self.zx_navTitleLabel即可

        快速設置左側/右側的按鈕(以右側按鈕為例)

        • 設置最右側按鈕的圖片和點擊回調

        [self zx_setRightBtnWithImgName:@"set_icon" clickedBlock:^(UIButton * _Nonnull btn) {
            NSLog(@"點擊了最右側的Button");
        }];
        • 設置最右側按鈕的文字和點擊回調

        [self zx_setRightBtnWithText:@"右側按鈕" clickedBlock:^(UIButton * _Nonnull btn) {
            NSLog(@"點擊了最右側的Button");
        }];

        根據左側/右側的按鈕對象進行具體設置(以左側按鈕為例)

        • 如果需要導航欄顯示返回圖標和返迴文字

        //由於ZXNavigationBar會自動在左側添加返回圖片和點擊返回事件,因此只需要設置返回的文字即可
        [self.zx_navLeftBtn setTitle:@"返回" forState:UIControlStateNormal];
        • 設置導航欄左側/右側的按鈕的其他非frame相關屬性,通過控制self.zx_navLeftBtn/zx_navRightBtn即可

        將圖片渲染為指定顏色

        //將oldImage渲染為紅色
        UIImage *resultImage = [oldImage zx_renderingColor:[UIColor redColor]];

        設置左側/右側的按鈕的大小

        //將按鈕寬高設置為30
        self.zx_navItemSize = 30;

        設置左側/右側的按鈕的間距與邊距

        //將按鈕邊距設置為0
        self.zx_navItemMargin = 0;

        設置右側第二個按鈕

        • 將上訴例子中zx_navLeftBtn/zx_navRightBtn修改為zx_navSubRightBtn即可

        設置導航欄背景顏色

        self.zx_navBar.backgroundColor = [UIColor orangeColor];

        設置導航欄背景圖片

        self.zx_navBar.zx_bacImage = [UIImage imageNamed:@"nav_bac"];

        設置導航欄漸變背景

        //從magentaColor到cyanColor漸變
        [self zx_setNavGradientBacFrom:[UIColor magentaColor] to:[UIColor cyanColor]];

        移除導航欄漸變背景

        [self zx_removeNavGradientBac];

        設置導航欄TintColor(此屬性可以將導航欄的title顏色、左右Button的文字和圖片顏色修改為TintColor)

        self.zx_navTintColor = [UIColor yellowColor];

        設置導航欄大小標題效果

        [self zx_setMultiTitle:@"ZXNavigationBar" subTitle:@"subTitle"];

        設置分割線背景顏色

        self.zx_navLineView.backgroundColor = [UIColor blueColor];
        • 分割線其他其他非frame相關屬性通過self.zx_navLineView設置即可

        設置伸縮式導航欄

        • 如果設置了控制器的Xib且在Xib中設置了子視圖的約束(僅需設置展開或者摺疊導航欄與動畫效果速度,無需手動調整控制器View子視圖的frame)

        //第一個參數folded:控制是展開還是摺疊導航欄;第二個參數speed:控制展開或收縮導航欄的速度,0-6,建議值為3;第三個參數offsetBlock:摺疊動畫導航欄位移回調;第四個參數completionBlock:摺疊動畫結束回調
        [self zx_setNavFolded:YES speed:3 foldingOffsetBlock:nil foldCompletionBlock:nil];
        • 如果是通過Frame設置控制器View的子視圖(如TableView),需要在foldingOffsetBlock回調中控制導航欄下方View的frame,使其始終緊貼導航欄底部

        __weak typeof(self) weakSelf = self;
        [self zx_setNavFolded:shouldFold speed:3 foldingOffsetBlock:^(CGFloat offset) {
            //tableView的y值跟隨這導航欄變化(導航欄高度減小,tableView的y值減小)
            weakSelf.tableView.y += offset;
            //tableView的高度值跟隨這導航欄變化(導航欄高度減小,tableView高度增加)
            weakSelf.tableView.height -= offset;
        } 

        設置狀態欄為白色

        self.zx_isLightStatusBar = YES;

        設置狀態欄為黑色

        self.zx_isLightStatusBar = NO;

        顯示系統導航欄(默認為否)

        //顯示系統導航欄將會自動隱藏ZXNavigationBar
        self.zx_showSystemNavBar = YES;

        隱藏ZXNavigationBar(默認為否)

        //顯示系統導航欄將會自動隱藏ZXNavigationBar
        self.zx_hideBaseNavBar = YES;

        禁止Xib載入控制器情況下自動將頂部View約束下移導航欄高度(默認為否)

        self.zx_disableNavAutoSafeLayout = YES;

        自定義TitleView

        //創建自定義View
        UIView *customTitleView = [[UIView alloc]init];
        [self zx_addCustomTitleView:customTitleView];

        自定義導航欄View

        //創建自定義View
        UIView *customNav = [[UIView alloc]init];
        [self zx_addCustomNavBar:customNav];

        更多示例,可下載Demo查閱,若有任何問題,可隨時在issue中提出

        相關源碼推薦:

        我來說兩句
        所有評論(0)
        264 0 0
        聯繫我們
        首頁/微信公眾賬號投稿

        帖子代碼編輯/版權問題

        QQ:435399051,742864542

        如何獲得代碼達人稱號?

        代碼貢獻英雄榜
        用戶名 下載數
        通過郵件訂閱最新 Code4App 信息
        上一條 /4 下一條

        廣告投放| 台湾互聯網違法和不良信息舉報中心|中國互聯網舉報中心|Github|申請友鏈|手機版|Code4App ( 粵ICP備15117877號-1 )