今天在做项目的时候发现一个问题,在设置导航栏左边按钮(导航栏上面的东西由栈顶控制器决定)的时候,如果是用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;
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。