簡單好用的iOS導(dǎo)航欄封裝.runtime屬性控制實(shí)例代碼
前言
本文主要給大家介紹一個(gè)不錯(cuò)的導(dǎo)航欄控制工具,可以大大的簡化代碼,并保留系統(tǒng)特性,不用自定義導(dǎo)航欄,不用繼承base。
下面話不多說了,來一起看看詳細(xì)的介紹吧
UIViewController+YINNav
效果
@interface UIViewController (YINNav) /** 控制屏幕方向 在appdelegate 實(shí)現(xiàn) - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{ return [[[NSUserDefaults standardUserDefaults] objectForKey:@"orientation"] integerValue]; } */ @property(nonatomic,assign)UIInterfaceOrientationMask y_screenOrientation; /** 上級(jí)控制器 可設(shè)置 手勢返回和pop的時(shí)候生效 */ @property (nonatomic) UIViewController *y_popController; /** 是否啟用大標(biāo)題模式 僅支持iOS11 默認(rèn)為NO 。 */ @property(nonatomic,assign)BOOL y_largeTitleMode; /** 隱藏nav橫線 */ @property(nonatomic,assign)BOOL y_navLineHidden; /** nav橫線 */ @property(nonatomic,strong)UIView *y_navLine; /** 字體顏色 默認(rèn)為[UIColor blackColor] */ @property (nonatomic , strong) UIColor *y_navBarTextColor; /** 背景顏色 默認(rèn)為[UIColor whiteColor] */ @property (nonatomic , strong) UIColor *y_navBarBgColor; /** 背景圖 如果設(shè)置了背景圖 背景色無效 */ @property (nonatomic , strong) UIImage *y_navBarBgImg; /** 設(shè)置對(duì)應(yīng)的y_navBarAlpha透明度 */ @property (nonatomic , assign) CGFloat y_navBarAlpha; /** navagationbar是否隱藏 默認(rèn)為不隱藏navagationbar */ @property (nonatomic , assign) BOOL y_navBarHidden; @end
看下與系統(tǒng)方法的對(duì)比
在我們使用系統(tǒng)api開發(fā)時(shí)。常規(guī)的,如果只有其中幾個(gè)頁面導(dǎo)航欄樣式不同,局部設(shè)置必須遵循一個(gè)原則:"進(jìn)入頁面時(shí)修改,離開頁面時(shí)還原”。
比如我們進(jìn)入一個(gè)頁面,需要設(shè)置當(dāng)前導(dǎo)航欄的背景色為灰色,使用如下方法:
//進(jìn)入頁面時(shí)設(shè)置顏色:灰色 - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController.navigationBar setBarTintColor:[UIColor grayColor]]; } //離開頁面時(shí)還原為全局設(shè)置:橙色 - (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; [self.navigationController.navigationBar setBarTintColor:[UIColor orangeColor]]; }
使用UIViewController+YINNav的代碼:
- (void)viewDidLoad { [super viewDidLoad]; self.y_navBarBgColor = [UIColor orangeColor]; }
當(dāng)頁面返回時(shí)自動(dòng)設(shè)置導(dǎo)航欄為即將顯示的controller配置。
透明度漸變效果
- (void)viewDidLoad { [super viewDidLoad]; self.y_navBarAlpha = 0.999;//如果有漸變 不能設(shè)為1 否則會(huì)頁面會(huì)從導(dǎo)航欄下面開始布局。 self.y_navBarBgColor = [UIColor orangeColor]; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ self.y_navBarAlpha = 0.999-(scrollView.contentOffset.y/400.f); }
設(shè)置導(dǎo)航欄背景顏色
- (void)viewDidLoad { [super viewDidLoad]; self.y_navBarBgColor = [UIColor orangeColor]; }
設(shè)置導(dǎo)航欄背景圖
- (void)viewDidLoad { [super viewDidLoad]; //權(quán)重高于背景色 self.y_navBarBgImg = [UIImage imageNamed:@"app2"]; }
設(shè)置導(dǎo)航欄大標(biāo)題
- (void)viewDidLoad { [super viewDidLoad]; self.y_largeTitleMode = YES; }
設(shè)置導(dǎo)航欄隱藏
- (void)viewDidLoad { [super viewDidLoad]; self.y_navBarHidden = YES; }
設(shè)置導(dǎo)航欄細(xì)線
- (void)viewDidLoad { [super viewDidLoad]; self. y_navLineHidden = YES; }
代碼控制返回頁面
- (void)viewDidLoad { [super viewDidLoad]; //傳一個(gè)controller對(duì)象 可以是navgationcontroller 棧內(nèi)的對(duì)象 self.y_popController = [[YINNavAlphaViewController alloc] init]; }
設(shè)置頁面方向
- (void)viewDidLoad { [super viewDidLoad]; self. y_screenOrientation = UIInterfaceOrientationMaskLandscapeRight; }
代碼地址
https://github.com/wangyin1/YINNavgationDemo (本地下載)
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- iOS 封裝導(dǎo)航欄及返回,獲取控件所在控制器的實(shí)例
- 關(guān)于iOS導(dǎo)航欄返回按鈕問題的解決方法
- iOS實(shí)現(xiàn)頂部標(biāo)簽式導(dǎo)航欄及下拉分類菜單
- IOS仿今日頭條滑動(dòng)導(dǎo)航欄
- 詳解iOS11關(guān)于導(dǎo)航欄問題
- iOS應(yīng)用開發(fā)中導(dǎo)航欄按鈕UIBarButtonItem的添加教程
- iOS如何去掉導(dǎo)航欄(UINavigationBar)下方的橫線
- iOS定制UISearchBar導(dǎo)航欄同步iOS11的方法
- iOS界面跳轉(zhuǎn)時(shí)導(dǎo)航欄和tabBar的隱藏與顯示功能
- iOS導(dǎo)航欄控制的一些總結(jié)
相關(guān)文章
IOS App圖標(biāo)和啟動(dòng)畫面尺寸詳細(xì)介紹
這篇文章主要介紹了IOS App圖標(biāo)和啟動(dòng)畫面尺寸詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-02-02iOS中給自定義tabBar的按鈕添加點(diǎn)擊放大縮小的動(dòng)畫效果
這篇文章主要介紹了iOS中給自定義tabBar的按鈕添加點(diǎn)擊放大縮小的動(dòng)畫效果的相關(guān)資料,非常不錯(cuò),具有參考解決價(jià)值,需要的朋友可以參考下2016-11-11iOS 縮小打包項(xiàng)目ipa大小的實(shí)現(xiàn)方法
下面小編就為大家分享一篇iOS 縮小打包項(xiàng)目ipa大小的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12MacOS系統(tǒng)下Unity啟動(dòng)黑屏的解決方法
最近發(fā)現(xiàn)了一個(gè)問題,unity一打開就黑屏,通過查找相關(guān)的資料終于解決了,所以下面這篇文章主要給大家介紹了關(guān)于在MacOS系統(tǒng)下Unity啟動(dòng)黑屏的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2018-01-01IOS 解決UIButton 點(diǎn)擊卡頓/延遲的問題
本文主要介紹 IOS UIButton, 這里給大家提供代碼實(shí)例作為參考,解決 UIButton 點(diǎn)擊卡頓或者延遲問題,在開發(fā) IOS 項(xiàng)目的小伙伴如果遇到這樣的問題可以參考下2016-07-07深入了解iOS開發(fā)中UIWindow的相關(guān)使用
這篇文章主要介紹了深入了解iOS開發(fā)中UIWindow的相關(guān)使用,以及iOS8以后產(chǎn)生的相關(guān)變化,需要的朋友可以參考下2015-10-10利用iOS動(dòng)畫來模擬音量振動(dòng)條的實(shí)現(xiàn)
本篇文章主要利用iOS動(dòng)畫來模擬音量振動(dòng)條的實(shí)現(xiàn)以及對(duì)CAReplicatorLayer的簡單介紹,需要的朋友可以參考下2015-07-07