iOS开发问题----自定义导航栏点击范围扩展
2016-08-16 14:46
2196 查看
在iOS开发中往往需要自定义导航栏的返回按钮,而一般采取的策略一般都是,先创建一个按钮,附上想要贴上的图片,然后设置大小,在添加点击事件,然后在创建一个UIBarButtonItem 将item设置成自定义位图模式,将先前创建的按钮赋值进去,这样一个自定义的按钮就贴上去了,有的时候还会根据图片的样式适度的调整图片在按钮里面的布局。但是有的时候需求需要我们将这个按钮的可点击范围放大,如果说向右侧扩大,这个问题不大,但是向左侧,就有问题,因为替换原先系统的返回按钮之后,他的位置就已经定了。无论做出怎样的调整,是变化frame大小也好,改变布局方式也罢,返回按钮的左侧都已经定死,难动分毫。那么可以采取如下策略,将左侧位置用UIBarButtonItem以适应填充的方式填充。
UIButton *button = [[UIButton
alloc] initWithFrame:CGRectMake(0,
0, 80,
44)];
[button setImage:[UIImage
imageNamed:@"arrow_left"] forState:UIControlStateNormal];
//设置自定义返回图片
[button setTitle:@""
forState:UIControlStateNormal];
[button setTitleColor:[UIColor
whiteColor] forState:UIControlStateNormal];
button.titleLabel.font = [UIFont
systemFontOfSize:17];
[button setImageEdgeInsets:UIEdgeInsetsMake(0,
-32,
0, 0)]; //调整按钮内图片的布局
[button setTitleEdgeInsets:UIEdgeInsetsMake(0,
-10,
0, 0)];
[button addTarget:self
action:@selector(backView)
forControlEvents:UIControlEventTouchUpInside];
self.navigationController.navigationBar.translucent
= NO;
UIBarButtonItem *space = [[UIBarButtonItem
alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil
action:nil];
space.width = -20;
UIBarButtonItem *backButtonItem = [[UIBarButtonItem
alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItems =
@[space, backButtonItem];
UIButton *button = [[UIButton
alloc] initWithFrame:CGRectMake(0,
0, 80,
44)];
[button setImage:[UIImage
imageNamed:@"arrow_left"] forState:UIControlStateNormal];
//设置自定义返回图片
[button setTitle:@""
forState:UIControlStateNormal];
[button setTitleColor:[UIColor
whiteColor] forState:UIControlStateNormal];
button.titleLabel.font = [UIFont
systemFontOfSize:17];
[button setImageEdgeInsets:UIEdgeInsetsMake(0,
-32,
0, 0)]; //调整按钮内图片的布局
[button setTitleEdgeInsets:UIEdgeInsetsMake(0,
-10,
0, 0)];
[button addTarget:self
action:@selector(backView)
forControlEvents:UIControlEventTouchUpInside];
self.navigationController.navigationBar.translucent
= NO;
UIBarButtonItem *space = [[UIBarButtonItem
alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil
action:nil];
space.width = -20;
UIBarButtonItem *backButtonItem = [[UIBarButtonItem
alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItems =
@[space, backButtonItem];
相关文章推荐
- iOS导航栏自定义按钮导致点击范围过大的问题
- ios开发_关于UIButton点击没有响应问题的阐述
- 【iOS开发-24】导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果
- IOS 自定义button有效点击范围
- 高德 ios 自定义气泡添加点击事件无效问题
- iOS开发 自定义navigationleftItem 之后手势失效的问题
- IOS开发笔记 - 关于导航标题栏的颜色问题
- iOS开发-UI控件:自定义UITableViewCell 上的多个按钮点击事件处理
- IOS开发之关于UIButton点击没有响应问题
- iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决
- IOS应用开发03——自定义Cell的AccessoryButton及事件源被点击的cell行
- 【iOS开发-111】自定义大头针Annotation以及2种导航划线的方法介绍
- iOS开发 带xib的自定义View自适应屏幕问题
- 【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置攻击帧(指定开始帧)以及扩展Cocos2d源码的CCAnimation简化动画创建!
- ios 自定义Button 不能点击问题
- IOS开发—自定义导航控制器
- IOS开发之关于UIButton点击没有响应问题
- iOS开发:自定义tableViewCell处理的问题
- IOS开发教程--关于点击IPHONE手机标题栏无法滚动到最顶端问题
- iOS开发>学无止境 - 自定义导航按钮UIBarButtonItem