iOS- 11设置导航条(扩展类UIBarButtonItem)

小知识:

1.UIBarButtonItem:描述按钮具体的内容
2.UINavigationItem:设置导航条上的内容(左边,右边,中间)
3.tabBarItem:设置tabBar上的按钮内容(tabBarButton)

左右item

问题:

  • UIButton包装成UIBarButtonItem就会导致点击区域扩大

    点击区域扩大


    应该包装成UIVIew在进行添加

    包装成UIVIew


    效果图

  • 扩展类UIBarButtonItem-代码如下
    UIBarButtonItem+XCExtension.h

     #import <UIKit/UIKit.h>
    
     @interface UIBarButtonItem (XCExtension)
     + (instancetype)itemWithNorImage:(NSString *)image highImage:(NSString *)highImage target:(id)target action:(SEL)action;
     @end

    UIBarButtonItem+XCExtension.m

      #import "UIBarButtonItem+XCExtension.h"
    
      @implementation UIBarButtonItem (XCExtension)
    
       + (instancetype)itemWithNorImage:(NSString *)image highImage:(NSString *)highImage target:(id)target action:(SEL)action
     {
         UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
         [btn setImage:[UIImage imageNamed:image] forState:UIControlStateNormal];
         [btn setImage:[UIImage imageNamed:highImage] forSt ate:UIControlStateHighlighted];
         [btn sizeToFit];
         [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
         UIView *containVew = [[UIView alloc] initWithFrame:btn.bounds];
         [containVew addSubview:btn];
         return [[UIBarButtonItem alloc]initWithCustomView:containVew];
      }

    使用方法:(例如)

      self.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithNorImage:@"nav_item_game_icon" highImage:@"nav_item_game_click_icon" target:self action:@selector(game)];

设置导航条标题

  • 只要通过模型设置,都需要通过富文本设置
  • 设置导航条标题
     self.navigationItem.title = @"我的";
     NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
     attrs[NSFontAttributeName] = [UIFont  boldSystemFontOfSize:20];
     [self.navigationController.navigationBar setTitleTextAttributes:attrs];
  • titleVIew
    self.navigationItem.titleView = [[UIImageView alloc]initWithImage:  [UIImage imageNamed:@"MainTitle"]];

片段代码:(调用)

 - (void)setupNavBar
   {

   //   左边Item
      self.navigationItem.leftBarButtonItem = [UIBarButtonItem
                                                                       itemWithNorImage:@"nav_item_game_icon"
                                                                              highImage:@"nav_item_game_click_icon"
                                                                                 target:self
                                                                                 action:@selector(game)];
   //   右边Item
                 self.navigationItem.rightBarButtonItem = [UIBarButtonItem
                                                               itemWithNorImage:@"navigationButtonRandom"
                                                                            highImage:@"navigationButtonRandomClick"
                                                                                    target:self
                                                                                    action:nil];
   //   中间titleView
                self.navigationItem.titleView = [[UIImageView alloc]initWithImage:  [UIImage imageNamed:@"MainTitle"]];

   }

 - (void)setupNavBar{

//   设置
UIBarButtonItem *settingItem = [UIBarButtonItem itemWithNorImage:@"mine-setting-icon" highImage:@"mine-setting-icon-click" target:self action:@selector(setting:)];

//   夜间模式
UIBarButtonItem *nightItem = [UIBarButtonItem itemWithNorImage:@"mine-moon-icon" selImage:@"mine-moon-icon-click" target:self action:@selector(night:)];

//   设置
self.navigationItem.rightBarButtonItems = @[settingItem,nightItem];
//   只要通过模型设置,都需要通过富文本设置
//   设置导航条标题 ==>  UINavigationBar
NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
 attrs[NSFontAttributeName] = [UIFont boldSystemFontOfSize:20];
[self.navigationController.navigationBar setTitleTextAttributes:attrs];

 }
 #pragma mark- 夜间模式以及设置点击事件
- (void)night:(UIButton *)btn{
//  选中状态-必须手动
btn.selected = !btn.selected;

}
- (void)setting:(UIButton *)btn{

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值