123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- //
- // BaseNavView.m
- // 乐销
- //
- // Created by 隋林栋 on 2016/12/17.
- // Copyright © 2016年 ping. All rights reserved.
- //
- #import "BaseNavView.h"
- //base alert view
- //#import "BaseAlertView.h"
- @implementation BaseNavView
- //初始化
- - (instancetype)init {
- self = [super init];
- if (self) {
- self.backgroundColor = [UIColor colorWithHexString:@"#3875F6"];
- self.frame = CGRectMake(0, 0, SCREEN_WIDTH, NAVIGATIONBAR_HEIGHT);
- }
- return self;
- }
- //懒加载
- - (UILabel *)labelTitle{
- if (!_labelTitle) {
- _labelTitle = [UILabel new];
- [GlobalMethod setLabel:_labelTitle widthLimit:SCREEN_WIDTH - W(50) * 2 numLines:1 fontNum:F(18) textColor:[UIColor whiteColor] text:@""];
- _labelTitle.font = [UIFont fontWithName:@"PingFangSC-Semibold" size:F(18)];
- }
- return _labelTitle;
- }
- - (UIControl *)backBtn{
- if (!_backBtn) {
- _backBtn = [UIControl new];
- _backBtn.tag = TAG_KEYBOARD;
- [_backBtn addTarget:self action:@selector(btnBackClick) forControlEvents:UIControlEventTouchUpInside];
- [BaseNavView resetControl:_backBtn imageName:@"icon_titlebar_whiteback" isLeft:true];
- }
- return _backBtn;
- }
- #pragma mark 类方法
- //刷新页面
- + (instancetype)initNavTitle:(NSString *)title
- leftView:(UIView *)leftView
- rightView:(UIView *)rigthView{
- BaseNavView * baseNav = [self new];
- [baseNav resetNavTitle:title leftView:leftView rightView:rigthView];
- return baseNav;
- }
- //左返回 右view
- + (instancetype)initNavBackTitle:(NSString *)title
- rightView:(UIView *)rigthView{
- BaseNavView * baseNav = [self new];
- [baseNav resetNavBackTitle:title rightView:rigthView];
- return baseNav;
- }
- //左图片 右图片
- + (instancetype)initNavTitle:(NSString *)title
- leftImageName:(NSString *)leftImageName
- leftBlock:(void (^)(void))leftBlock
- rightImageName:(NSString *)rightImageName
- righBlock:(void (^)(void))rightBlock{
- BaseNavView * baseNav = [self new];
- [baseNav resetNavTitle:title leftImageName:leftImageName leftBlock:leftBlock rightImageName:rightImageName righBlock:rightBlock];
- return baseNav;
- }
- //左返回 右图片
- + (instancetype)initNavBackWithTitle:(NSString *)title
- rightImageName:(NSString *)rightImageName
- righBlock:(void (^)(void))rightBlock{
- BaseNavView * baseNav = [self new];
- [baseNav resetNavBackWithTitle:title rightImageName:rightImageName righBlock:rightBlock];
- return baseNav;
- }
- //返回 右文字
- + (instancetype)initNavBackTitle:(NSString *)title
- rightTitle:(NSString *)rightTitle
- rightBlock:(void (^)(void))rightBlock{
- BaseNavView * baseNav = [self new];
- [baseNav initNavBackTitle:title rightTitle:rightTitle rightBlock:rightBlock];
-
- return baseNav;
-
- }
- //返回 右文字
- - (void)initNavBackTitle:(NSString *)title
- rightTitle:(NSString *)rightTitle
- rightBlock:(void (^)(void))rightBlock{
- self.rightBlock = rightBlock;
- if (!isStr(rightTitle)){
- [self resetNavTitle:title leftView:self.backBtn rightView:nil];
- return;
- }
- UIControl * con = [UIControl new];
- con.tag = TAG_KEYBOARD;
- [BaseNavView resetControl:con title:rightTitle isLeft:false];
- [con addTarget:self action:@selector(btnRightClick) forControlEvents:UIControlEventTouchUpInside];
- [self resetNavTitle:title leftView:self.backBtn rightView:con];
-
- }
- //刷新页面 左view 右view
- - (void)resetNavTitle:(NSString *)title
- leftView:(UIView *)leftView
- rightView:(UIView *)rightView{
-
- //set title
- [self.labelTitle fitTitle:title variable:SCREEN_WIDTH - W(50) * 2];
- self.labelTitle.centerX = self.width/2.0;
- self.labelTitle.centerY = (NAVIGATIONBAR_HEIGHT - STATUSBAR_HEIGHT)/2.0 + STATUSBAR_HEIGHT;
- [self addSubview:self.labelTitle];
- //reset left view
- [self resetNavLeftView:leftView];
- //reset right view
- [self resetNavRightView:rightView];
- [self removeSubViewWithTag:TAG_LINE];
- }
- - (void)resetNavRightView:(UIView *)rightView{
- //right view
- if (rightView != nil) {
- self.rightView = rightView;
- rightView.frame = CGRectMake(SCREEN_WIDTH - rightView.width, STATUSBAR_HEIGHT, rightView.width, NAVIGATIONBAR_HEIGHT - STATUSBAR_HEIGHT);
- [self addSubview:rightView];
- }
- }
- - (void)resetNavLeftView:(UIView *)leftView{
- //left view
- if (leftView != nil) {
- self.leftView = leftView;
- leftView.frame = CGRectMake(0, STATUSBAR_HEIGHT, leftView.width, NAVIGATIONBAR_HEIGHT - STATUSBAR_HEIGHT);
-
- [self addSubview:leftView];
- }
- }
- //左返回 右view
- - (void)resetNavBackTitle:(NSString *)title
- rightView:(UIView *)rigthView{
- [self resetNavTitle:title leftView:self.backBtn rightView:rigthView];
- }
- //左图片 右图片
- - (void)resetNavTitle:(NSString *)title
- leftImageName:(NSString *)leftImageName
- leftBlock:(void (^)(void))leftBlock
- rightImageName:(NSString *)rightImageName
- righBlock:(void (^)(void))rightBlock{
- UIView * leftView = nil;
- if (leftImageName != nil) {
- self.leftBlock = leftBlock;
- UIControl * con = [UIControl new];
- [BaseNavView resetControl:con imageName:leftImageName isLeft:true];
- [con addTarget:self action:@selector(btnLeftClick) forControlEvents:UIControlEventTouchUpInside];
- leftView = con;
- }
- UIView * rightView = nil;
- if (rightImageName != nil) {
- self.rightBlock = rightBlock;
- UIControl * con = [UIControl new];
- [BaseNavView resetControl:con imageName:rightImageName isLeft:false];
- [con addTarget:self action:@selector(btnRightClick) forControlEvents:UIControlEventTouchUpInside];
- rightView = con;
- }
- [self resetNavTitle:title leftView:leftView rightView:rightView];
- }
- //返回 右图片
- - (void)resetNavBackWithTitle:(NSString *)title
- rightImageName:(NSString *)rightImageName
- righBlock:(void (^)(void))rightBlock{
- self.rightBlock = rightBlock;
- UIControl * con = [UIControl new];
- [BaseNavView resetControl:con imageName:rightImageName isLeft:false];
- [con addTarget:self action:@selector(btnRightClick) forControlEvents:UIControlEventTouchUpInside];
- [self resetNavTitle:title leftView:self.backBtn rightView:con];
- }
- //更改title
- - (void)changeTitle:(NSString *)title{
- [self.labelTitle fitTitle:title variable:0];
- self.labelTitle.centerX = self.width/2.0;
- }
- //更改nav right title
- - (void)changeRightTitle:(NSString *)rightTitle{
- [self.rightView removeFromSuperview];
-
- UIControl * con = [UIControl new];
- con.tag = TAG_KEYBOARD;
- [BaseNavView resetControl:con title:rightTitle isLeft:false];
- [con addTarget:self action:@selector(btnRightClick) forControlEvents:UIControlEventTouchUpInside];
- [self resetNavRightView:con];
- }
- //更改nav right image
- - (void)changeRightImage:(NSString *)rightImageName{
- [self.rightView removeFromSuperview];
- UIControl * con = [UIControl new];
- [BaseNavView resetControl:con imageName:rightImageName isLeft:false];
- [con addTarget:self action:@selector(btnRightClick) forControlEvents:UIControlEventTouchUpInside];
- [self resetNavRightView:con];
- }
- #pragma mark 点击事件
- //back btn click
- - (void)btnBackClick{
- if (self.blockBack) {
- self.blockBack();
- }else{
- [self popVC];
- }
- }
- - (void)popVC{
- UIViewController * vcRespond = [self fetchVC];
- if (vcRespond && [vcRespond isKindOfClass:UIViewController.class] && vcRespond.blockWillBack) {
- vcRespond.blockWillBack(vcRespond);
- }else{
- [GB_Nav popViewControllerAnimated:true];
- }
- }
- - (void)btnRightClick{
- if (self.rightBlock != nil) {
- self.rightBlock();
- }
- }
- - (void)btnLeftClick{
- if (self.leftBlock != nil) {
- self.leftBlock();
- }
- }
- #pragma mark 通用方法
- + (void)resetControl:(UIView*) control
- imageName:(NSString *) imageName
- isLeft:(BOOL)isLeft{
- control.backgroundColor = [UIColor clearColor];
- [control removeAllSubViews];
- UIImageView * iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]];
- iv.backgroundColor = [UIColor clearColor];
- if (isLeft) {
- control.frame = CGRectMake(0, STATUSBAR_HEIGHT, W(100), NAVIGATIONBAR_HEIGHT - STATUSBAR_HEIGHT);
- iv.left = W(15);
- } else {
- control.frame = CGRectMake(SCREEN_WIDTH - W(100), STATUSBAR_HEIGHT, W(100), NAVIGATIONBAR_HEIGHT - STATUSBAR_HEIGHT);
- iv.right = control.width - W(15);
- }
- iv.centerY = control.height/2.0;
- [control addSubview: iv];
-
- }
- + (void)resetControl:(UIView*) control
- title:(NSString *) title
- isLeft:(BOOL)isLeft{
- control.backgroundColor = [UIColor clearColor];
- [control removeAllSubViews];
- UILabel * label = [UILabel new];
- label.numLimit = 6;
- label.numberOfLines = 1;
- label.textColor = [UIColor whiteColor];
- label.fontNum = BASENAVVIEW_LEFT_TITLE_FONT_NUM;
- label.backgroundColor = [UIColor clearColor];
- [label fitTitle:title variable:0];
- if (isLeft) {
- control.frame = CGRectMake(0, STATUSBAR_HEIGHT, W(100), NAVIGATIONBAR_HEIGHT - STATUSBAR_HEIGHT);
- label.left = W(20);
- } else {
- control.frame = CGRectMake(SCREEN_WIDTH - W(100), STATUSBAR_HEIGHT, W(100), NAVIGATIONBAR_HEIGHT - STATUSBAR_HEIGHT);
- label.right = control.width - W(20);
- }
- label.centerY = control.height/2.0;
- [control addSubview: label];
-
- }
- //设置蓝色模式
- - (void)restBlueStyle{
- [self removeSubViewWithTag:TAG_LINE];
- self.labelTitle.textColor = [UIColor whiteColor];
- self.backgroundColor = COLOR_BLUE;
- [BaseNavView resetControl:self.backBtn imageName:@"left_blue" isLeft:true];
- }
- @end
|