前言
本文主要給大家介紹一個不錯的導航欄控制工具,可以大大的簡化代碼,并保留系統(tǒng)特性,不用自定義導航欄,不用繼承base。
下面話不多說了,來一起看看詳細的介紹吧
UIViewController+YINNav
效果
@interface UIViewController (YINNav)/** 控制屏幕方向 在appdelegate 實現 - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{ return [[[NSUserDefaults standardUserDefaults] objectForKey:@"orientation"] integerValue]; } */@property(nonatomic,assign)UIInterfaceOrientationMask y_screenOrientation;/** 上級控制器 可設置 手勢返回和pop的時候生效 */@property (nonatomic) UIViewController *y_popController;/** 是否啟用大標題模式 僅支持iOS11 默認為NO 。 */@property(nonatomic,assign)BOOL y_largeTitleMode;/** 隱藏nav橫線 */@property(nonatomic,assign)BOOL y_navLineHidden;/** nav橫線 */@property(nonatomic,strong)UIView *y_navLine;/** 字體顏色 默認為[UIColor blackColor] */@property (nonatomic , strong) UIColor *y_navBarTextColor;/** 背景顏色 默認為[UIColor whiteColor] */@property (nonatomic , strong) UIColor *y_navBarBgColor;/** 背景圖 如果設置了背景圖 背景色無效 */@property (nonatomic , strong) UIImage *y_navBarBgImg;/** 設置對應的y_navBarAlpha透明度 */@property (nonatomic , assign) CGFloat y_navBarAlpha;/** navagationbar是否隱藏 默認為不隱藏navagationbar */@property (nonatomic , assign) BOOL y_navBarHidden;@end
看下與系統(tǒng)方法的對比
在我們使用系統(tǒng)api開發(fā)時。常規(guī)的,如果只有其中幾個頁面導航欄樣式不同,局部設置必須遵循一個原則:"進入頁面時修改,離開頁面時還原”。
比如我們進入一個頁面,需要設置當前導航欄的背景色為灰色,使用如下方法:
//進入頁面時設置顏色:灰色- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController.navigationBar setBarTintColor:[UIColor grayColor]];}//離開頁面時還原為全局設置:橙色- (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; [self.navigationController.navigationBar setBarTintColor:[UIColor orangeColor]];}
使用UIViewController+YINNav的代碼:
- (void)viewDidLoad { [super viewDidLoad]; self.y_navBarBgColor = [UIColor orangeColor];}
當頁面返回時自動設置導航欄為即將顯示的controller配置。
透明度漸變效果
- (void)viewDidLoad { [super viewDidLoad]; self.y_navBarAlpha = 0.999;//如果有漸變 不能設為1 否則會頁面會從導航欄下面開始布局。 self.y_navBarBgColor = [UIColor orangeColor];}- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ self.y_navBarAlpha = 0.999-(scrollView.contentOffset.y/400.f);}
設置導航欄背景顏色
- (void)viewDidLoad { [super viewDidLoad]; self.y_navBarBgColor = [UIColor orangeColor];}
設置導航欄背景圖
- (void)viewDidLoad { [super viewDidLoad]; //權重高于背景色 self.y_navBarBgImg = [UIImage imageNamed:@"app2"];}
設置導航欄大標題
- (void)viewDidLoad { [super viewDidLoad]; self.y_largeTitleMode = YES;}
設置導航欄隱藏
- (void)viewDidLoad { [super viewDidLoad]; self.y_navBarHidden = YES;}
設置導航欄細線
- (void)viewDidLoad { [super viewDidLoad]; self. y_navLineHidden = YES;}
代碼控制返回頁面
- (void)viewDidLoad { [super viewDidLoad]; //傳一個controller對象 可以是navgationcontroller 棧內的對象 self.y_popController = [[YINNavAlphaViewController alloc] init];}
設置頁面方向
- (void)viewDidLoad { [super viewDidLoad]; self. y_screenOrientation = UIInterfaceOrientationMaskLandscapeRight;}
代碼地址
https://github.com/wangyin1/YINNavgationDemo
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。
新聞熱點
疑難解答