New file |
| | |
| | | // |
| | | // LMJBaseViewController.m |
| | | // PLMMPRJK |
| | | // |
| | | // Created by NJHu on 2017/3/29. |
| | | // Copyright © 2017年 GoMePrjk. All rights reserved. |
| | | // |
| | | |
| | | #import "LMJNavUIBaseViewController.h" |
| | | #import "LMJNavigationBar.h" |
| | | #import <sys/utsname.h> |
| | | |
| | | @implementation LMJNavUIBaseViewController |
| | | |
| | | - (void)viewDidLoad { |
| | | [super viewDidLoad]; |
| | | |
| | | TWWeak(self); |
| | | [self.navigationItem addObserverBlockForKeyPath:TWKeyPath(self.navigationItem, title) block:^(id _Nonnull obj, id _Nonnull oldVal, NSString *_Nonnull newVal) { |
| | | if (newVal.length > 0 && ![newVal isEqualToString:oldVal]) { |
| | | weakself.title = newVal; |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | |
| | | #pragma mark - 生命周期 |
| | | - (void)viewWillAppear:(BOOL)animated |
| | | { |
| | | [super viewWillAppear:animated]; |
| | | |
| | | } |
| | | |
| | | - (void)viewWillLayoutSubviews |
| | | { |
| | | [super viewWillLayoutSubviews]; |
| | | } |
| | | |
| | | |
| | | - (void)viewDidLayoutSubviews |
| | | { |
| | | [super viewDidLayoutSubviews]; |
| | | |
| | | self.lmj_navgationBar.lmj_width = self.view.lmj_width; |
| | | [self.view bringSubviewToFront:self.lmj_navgationBar]; |
| | | } |
| | | |
| | | - (void)viewDidAppear:(BOOL)animated |
| | | { |
| | | [super viewDidAppear:animated]; |
| | | |
| | | [UIApplication sharedApplication].statusBarStyle = [self navUIBaseViewControllerPreferStatusBarStyle:self]; |
| | | } |
| | | |
| | | - (void)dealloc { |
| | | [self.navigationItem removeObserverBlocksForKeyPath:TWKeyPath(self.navigationItem, title)]; |
| | | } |
| | | |
| | | |
| | | #pragma mark - LMJNavUIBaseViewControllerDataSource |
| | | - (BOOL)navUIBaseViewControllerIsNeedNavBar:(LMJNavUIBaseViewController *)navUIBaseViewController |
| | | { |
| | | return YES; |
| | | } |
| | | |
| | | |
| | | - (UIStatusBarStyle)navUIBaseViewControllerPreferStatusBarStyle:(LMJNavUIBaseViewController *)navUIBaseViewController |
| | | { |
| | | return UIStatusBarStyleDefault; |
| | | } |
| | | |
| | | |
| | | #pragma mark - DataSource |
| | | /**头部标题*/ |
| | | - (NSMutableAttributedString*)lmjNavigationBarTitle:(LMJNavigationBar *)navigationBar |
| | | { |
| | | return [self changeTitle:self.title ?: self.navigationItem.title changeColor:[UIColor blackColor]]; |
| | | } |
| | | |
| | | /** 背景图片 */ |
| | | //- (UIImage *)lmjNavigationBarBackgroundImage:(LMJNavigationBar *)navigationBar |
| | | //{ |
| | | // |
| | | //} |
| | | |
| | | /** 背景色 */ |
| | | - (UIColor *)lmjNavigationBackgroundColor:(LMJNavigationBar *)navigationBar |
| | | { |
| | | return [UIColor clearColor]; |
| | | } |
| | | |
| | | /** 是否显示底部黑线 */ |
| | | //- (BOOL)lmjNavigationIsHideBottomLine:(LMJNavigationBar *)navigationBar |
| | | //{ |
| | | // return NO; |
| | | //} |
| | | |
| | | /** 导航条的高度 */ |
| | | - (CGFloat)lmjNavigationHeight:(LMJNavigationBar *)navigationBar |
| | | { |
| | | return [UIApplication sharedApplication].statusBarFrame.size.height + 44.0; |
| | | } |
| | | |
| | | |
| | | /** 导航条的左边的 view */ |
| | | //- (UIView *)lmjNavigationBarLeftView:(LMJNavigationBar *)navigationBar |
| | | //{ |
| | | // |
| | | //} |
| | | /** 导航条右边的 view */ |
| | | //- (UIView *)lmjNavigationBarRightView:(LMJNavigationBar *)navigationBar |
| | | //{ |
| | | // |
| | | //} |
| | | /** 导航条中间的 View */ |
| | | //- (UIView *)lmjNavigationBarTitleView:(LMJNavigationBar *)navigationBar |
| | | //{ |
| | | // |
| | | //} |
| | | /** 导航条左边的按钮 */ |
| | | //- (UIImage *)lmjNavigationBarLeftButtonImage:(UIButton *)leftButton navigationBar:(LMJNavigationBar *)navigationBar |
| | | //{ |
| | | // |
| | | //} |
| | | /** 导航条右边的按钮 */ |
| | | //- (UIImage *)lmjNavigationBarRightButtonImage:(UIButton *)rightButton navigationBar:(LMJNavigationBar *)navigationBar |
| | | //{ |
| | | // |
| | | //} |
| | | |
| | | |
| | | |
| | | #pragma mark - Delegate |
| | | /** 左边的按钮的点击 */ |
| | | -(void)leftButtonEvent:(UIButton *)sender navigationBar:(LMJNavigationBar *)navigationBar |
| | | { |
| | | NSLog(@"%s", __func__); |
| | | } |
| | | /** 右边的按钮的点击 */ |
| | | -(void)rightButtonEvent:(UIButton *)sender navigationBar:(LMJNavigationBar *)navigationBar |
| | | { |
| | | NSLog(@"%s", __func__); |
| | | } |
| | | /** 中间如果是 label 就会有点击 */ |
| | | -(void)titleClickEvent:(UILabel *)sender navigationBar:(LMJNavigationBar *)navigationBar |
| | | { |
| | | NSLog(@"%s", __func__); |
| | | } |
| | | |
| | | |
| | | #pragma mark 自定义代码 |
| | | |
| | | - (void)setNavBarImg:(NSString *)imageName |
| | | { |
| | | UIImage *image = [UIImage imageNamed:imageName]; |
| | | [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; |
| | | [self.navigationController.navigationBar setTintColor:[UIColor whiteColor]]; |
| | | |
| | | NSDictionary *attribute = @{ |
| | | NSForegroundColorAttributeName:[UIColor whiteColor], |
| | | NSFontAttributeName:[UIFont systemFontOfSize:18] |
| | | }; |
| | | |
| | | [self.navigationController.navigationBar setTitleTextAttributes:attribute]; |
| | | } |
| | | |
| | | - (NSMutableAttributedString *)changeTitle:(NSString *)curTitle changeColor:(UIColor*) color |
| | | { |
| | | NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:curTitle ?: @""]; |
| | | |
| | | [title addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(0, title.length)]; |
| | | |
| | | [title addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:17] range:NSMakeRange(0, title.length)]; |
| | | |
| | | return title; |
| | | } |
| | | |
| | | |
| | | - (LMJNavigationBar *)lmj_navgationBar |
| | | { |
| | | // 父类控制器必须是导航控制器 |
| | | if(!_lmj_navgationBar && [self.parentViewController isKindOfClass:[UINavigationController class]] && [self navUIBaseViewControllerIsNeedNavBar:self]) |
| | | { |
| | | LMJNavigationBar *navigationBar = [[LMJNavigationBar alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 0)]; |
| | | [self.view addSubview:navigationBar]; |
| | | navigationBar.dataSource = self; |
| | | navigationBar.lmjDelegate = self; |
| | | |
| | | _lmj_navgationBar = navigationBar; |
| | | } |
| | | return _lmj_navgationBar; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | - (void)setTitle:(NSString *)title |
| | | { |
| | | [super setTitle:title]; |
| | | self.lmj_navgationBar.title = [self changeTitle:title changeColor:[UIColor blackColor]]; |
| | | } |
| | | |
| | | @end |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |