在很多App设计中导航栏左侧/右侧都会被设计成图标。
我们通常是采用创建一个按钮的方式:
// 创建按钮
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setImage:[UIImage imageNamed:@"nav_item_game_icon"] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:@"nav_item_game_click_icon"] forState:UIControlStateHighlighted];
[btn sizeToFit];
// 设置导航栏左边按钮
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
这样就给导航栏左侧设置了一个图标按钮。
但是也伴随着一个问题:
这个按钮的可点击范围是不是也忒大了?
解决:给UIButton
包装一个UIView
// 创建按钮
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setImage:[UIImage imageNamed:@"nav_item_game_icon"] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:@"nav_item_game_click_icon"] forState:UIControlStateHighlighted];
[btn sizeToFit];
// 把UIButton包装成UIBarButtonItem 有会按钮点击范围过大的问题
// 解决这个问题
UIView *containView = [[UIView alloc] initWithFrame:btn.bounds];
[containView addSubview:btn];
// 设置导航栏左边按钮
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:containView];