设置导航条左右按钮

今天在做项目的时候发现一个问题,在设置导航栏左边按钮(导航栏上面的东西由栈顶控制器决定)的时候,如果是用UIButton包装成UIBarButtonItem设置为导航条左边的按钮,那么会导致按钮可点击范围增大,这样的用户体验是非常不好的,下面是出问题的源码:
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];

    // 设置导航条按钮
    [self setUpNavBar];

}

- (void)setUpNavBar
    {
        UIButton *btn = [[UIButton alloc] init];
        [btn setImage:[UIImage imageNamed:@"nav_item_game_icon"] forState:UIControlStateNormal];
        [btn setImage:[UIImage imageNamed:@"nav_item_game_click_icon"] forState:UIControlStateHighlighted];
        [btn sizeToFit];
        UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:btn];
        self.navigationItem.leftBarButtonItem = item;
}  
  • 之后我采用UIView包装UIButton在把UIView包装成UIBarButtonItem设置为导航条左边的按钮,点击范围就正常了
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    // 设置导航条按钮
    [self setUpNavBar];

}

- (void)setUpNavBar
{
    UIButton *btn = [[UIButton alloc] init];
    [btn setImage:[UIImage imageNamed:@"nav_item_game_icon"] forState:UIControlStateNormal];
    [btn setImage:[UIImage imageNamed:@"nav_item_game_click_icon"] forState:UIControlStateHighlighted];
    [btn sizeToFit];
    // 添加的代码
    UIView *itemView = [[UIView alloc] initWithFrame:btn.bounds];
    [itemView addSubview:btn];
    
    UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:itemView];
    self.navigationItem.leftBarButtonItem = item;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,224评论 4 61
  • 导航控制器的返回按钮设置以及一些细节处理 导航控制器的返回按钮可以通过下面两个属性来设置 根据谁的东西谁管理的原则...
    追风筝的boy阅读 5,154评论 11 14
  • 你把我丢在人海 让我回忆不起来 你的爱 是否还在 时间已流逝 你是否还在徘徊 你说你放开会自在 思念不妨碍 如今 ...
    贝小仙阅读 1,378评论 0 3