//
|
// 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
|