博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中导航栏navigationBar返回按钮--导航右侧按钮--常用设置、导航控制器全局设置返回按钮
阅读量:4289 次
发布时间:2019-05-27

本文共 7060 字,大约阅读时间需要 23 分钟。

 

//导航控制器全局设置导航按钮

//基础的导航控制器,统一处理返回按钮偏移的问题#import 
NS_ASSUME_NONNULL_BEGIN@interface QMWNBasenav : UINavigationController@property (nonatomic,assign) BOOL isAlwaysShadow;@endNS_ASSUME_NONNULL_END****//基础的导航控制器,统一处理返回按钮偏移的问题#import "QMWNBasenav.h"@interface QMWNBasenav () @property(nonatomic,strong)UIImage * shadowView; @end@implementation QMWNBasenav+ (void)initialize{ // UINavigationBar *bar = [UINavigationBar appearanceWhenContainedIn:[self class], nil]; UINavigationBar *bar = [UINavigationBar appearance]; //[bar setBarTintColor:[UIColor gradientFromColor:gradiantFromColor toColor:gradiantToColor withWidth:SCREEN_WIDTH]]; [bar setTitleTextAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:20],NSForegroundColorAttributeName:[UIColor blackColor]}]; [bar setShadowImage:[[UIImage alloc] init]]; // 设置item UIBarButtonItem *item = [UIBarButtonItem appearance]; // UIControlStateNormal NSMutableDictionary *itemAttrs = [NSMutableDictionary dictionary]; itemAttrs[NSForegroundColorAttributeName] = [UIColor blackColor]; itemAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:17]; [item setTitleTextAttributes:itemAttrs forState:UIControlStateNormal]; // UIControlStateDisabled NSMutableDictionary *itemDisabledAttrs = [NSMutableDictionary dictionary]; itemDisabledAttrs[NSForegroundColorAttributeName] = [UIColor lightGrayColor]; [item setTitleTextAttributes:itemDisabledAttrs forState:UIControlStateDisabled];}- (void)viewDidLoad { [super viewDidLoad]; // [self.navigationBar setBackgroundImage:[UIImage imageNamed:@""] forBarMetrics:UIBarMetricsDefault]; // 如果滑动移除控制器的功能失效,清空代理(让导航控制器重新设置这个功能) [self.interactivePopGestureRecognizer setEnabled:NO]; }- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{ if (self.childViewControllers.count > 0) { // 如果push进来的不是第一个控制器 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:[UIImage imageNamed:@"navi_arrow_back"] forState:UIControlStateNormal]; button.size = CGSizeMake(40, 30); // 让按钮内部的所有内容左对齐 button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; // [button sizeToFit]; // 让按钮的内容往左边偏移10 button.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0); [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; // 修改导航栏左边的item viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; // 隐藏tabbar viewController.hidesBottomBarWhenPushed = YES; [self.navigationBar setShadowImage:self.shadowView]; }else{ if(self.isAlwaysShadow) { [self.navigationBar setShadowImage:self.shadowView]; }else{ [self.navigationBar setShadowImage:[[UIImage alloc]init]]; } } // 这句super的push要放在后面, 让viewController可以覆盖上面设置的leftBarButtonItem [super pushViewController:viewController animated:animated]; }- (UIViewController *)popViewControllerAnimated:(BOOL)animated{ if (self.childViewControllers.count > 2){ [self.navigationBar setShadowImage:self.shadowView]; }else{ if(self.isAlwaysShadow) { [self.navigationBar setShadowImage:self.shadowView]; }else{ [self.navigationBar setShadowImage:[[UIImage alloc]init]]; } }return [super popViewControllerAnimated:animated]; }- (void)back{ [self popViewControllerAnimated:YES];}@end

 

//添加返回按钮

-(void)backBtn{

    UIButton *backBtn=[[UIButtonalloc]initWithFrame:CGRectMake(0,10,60,20)];

    [backBtn setTitle:@"返回"forState:UIControlStateNormal];

    backBtn.titleLabel.font=[UIFontsystemFontOfSize:12];

    backBtn.imageEdgeInsets=UIEdgeInsetsMake(2,2,2,2);

    [backBtn setImage:[UIImageimageNamed:@"fanhui"]forState:UIControlStateNormal];

    [backBtn addTarget:self action:@selector(backto)forControlEvents:UIControlEventTouchDown];

    

    UIBarButtonItem *leftBtn=[[UIBarButtonItemalloc]initWithCustomView:backBtn];

    UIBarButtonItem *flexBtn=[[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpacetarget:nilaction:nil];

    flexBtn.width=-10;//正数往左移,负数往右移

    self.navigationItem.leftBarButtonItems=@[flexBtn,leftBtn];

    

}

 

//返回按钮

-(void)backto{

    

    [selfdismissViewControllerAnimated:YEScompletion:^{

        

    }];

}

兼容IOS11:

//返回按钮

-(void)addbackBtn{

    

    UIButton *bbtn=[[UIButtonalloc]initWithFrame:CGRectMake(0, 0, 60, 30)];

    [bbtn setImage:[UIImageimageNamed:@"icon_navigation_back"]forState:UIControlStateNormal];

    [bbtn addTarget:selfaction:@selector(backBtn)forControlEvents:UIControlEventTouchDown];

    UIBarButtonItem *fixBtn=[[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpacetarget:selfaction:nil];

    //兼容IOS11

   CGFloat sysv= [[[UIDevicecurrentDevice]systemVersion]floatValue];

if(sysv==11.0){

    bbtn.contentHorizontalAlignment =UIControlContentHorizontalAlignmentLeft;

    [bbtn setImageEdgeInsets:UIEdgeInsetsMake(0,0,0,0)];

}

    

   

if(sysv==11.0){

   

    }else {

    fixBtn.width=-30;

    }

    UIBarButtonItem *backbtn=[[UIBarButtonItemalloc]initWithCustomView:bbtn];

    NSArray *btnArr=@[fixBtn,backbtn];

    self.navigationItem.leftBarButtonItems=btnArr;

}

 

========右侧按钮=======

 

//设置导航右边按钮

-(void)addrightBtn{

    UIButton *rightBtn=[[UIButtonalloc]initWithFrame:CGRectMake(0, 0, 60, 30)];

    [rightBtn setImage:[UIImageimageNamed:@"tianjia"]forState:UIControlStateNormal];

 

 

    [rightBtn addTarget:selfaction:@selector(addListBtn)forControlEvents:UIControlEventTouchDown];

    UIBarButtonItem *rbtn=[[UIBarButtonItemalloc]initWithCustomView:rightBtn];

    UIBarButtonItem *fixBtn=[[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpacetarget:nilaction:nil];

    fixBtn.width=0;

    self.navigationItem.rightBarButtonItems=@[fixBtn,rbtn];

}

//兼容IOS11

 

//设置导航右边按钮

-(void)addrightBtn{

    UIButton *rightBtn=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];

    [rightBtn setTitleColor:[UIColorwhiteColor]forState:UIControlStateNormal];

    [rightBtn setTitle:@"设置"forState:UIControlStateNormal];

    //兼容IOS11

    CGFloat sysv= [[[UIDevicecurrentDevice]systemVersion]floatValue];

    if(sysv==11.0){

    rightBtn.contentHorizontalAlignment =UIControlContentHorizontalAlignmentRight;

    [rightBtn setTitleEdgeInsets:UIEdgeInsetsMake(0,0,0,0)];

    }

    [rightBtn.titleLabelsetFont:[UIFontsystemFontOfSize:14weight:UIFontWeightThin]];

    [rightBtn addTarget:selfaction:@selector(addListBtn)forControlEvents:UIControlEventTouchDown];

    UIBarButtonItem *rbtn=[[UIBarButtonItemalloc]initWithCustomView:rightBtn];

    UIBarButtonItem *fixBtn=[[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpacetarget:nilaction:nil];

   

if(sysv==11.0){

   

    }else {

    fixBtn.width=-30;

    }

    self.navigationItem.rightBarButtonItems=@[fixBtn,rbtn];

}

 

-(void)addListBtn{

 

 

}

 

 

转载地址:http://gwmgi.baihongyu.com/

你可能感兴趣的文章
谈谈JDBC
查看>>
jdbc_API中的说明
查看>>
jdbc_javax包
查看>>
Android 6.0 APIs_新特性(google官方)
查看>>
maxwell斗胆也来谈谈"学习方法“_转自黑马论坛
查看>>
XML解析
查看>>
AndroidManifest.xml详解
查看>>
activity的xml详解
查看>>
JNI 简介与实现-JavaNativeInterface
查看>>
ResourceBundle和Properties
查看>>
javascript *** is not a function
查看>>
老韩思考:卖点----卖豆腐的能转行IT
查看>>
Android_属性动画
查看>>
网络下载-xUtils,HttpUtils
查看>>
网络下载-AsyncHttpClient
查看>>
myUtils-多线程下载
查看>>
网络下载-断点续传原理
查看>>
线程-消息回环处理机制
查看>>
感谢伤害我的人
查看>>
请不要做浮躁的人----(学习编程的忠告)
查看>>