调整导航条上leftBarButtonItem和rightBarButtonItem与屏幕边界的间距

 我们发现,在设置navigationItem的leftBarButtonItem或rightBarButtonItem时,用CustomView初始化UIBarButtonItem,不论怎么设置CustomView的frame,添加到导航条上之后总是和屏幕边界有一定的间距(5pix),如何自由调整这个间距呢?

        方法一:

        考虑到CustomView一般为UIButton,如果该按钮上面是一个图片,仅为了显示效果,我们可以通过setImage: forState:方法设置button的背景图片(注意这里不是setBackgroundImage: forState:),然后通过setImageEdgeInsets:方法设置按钮图片和按钮各个边界的距离即可。按钮为文字的情况类似,对应的方法是setTitle: forState:和setTitleEdgeInsets:

        方法二:

        初始化一个用于控制间距的UIBarButtonItem实例negativeSpacer,并设置negativeSpacer的width属性的值,设为-5的时候,正好可以使按钮与屏幕边界值为0,以rightBarButtonItem情况为例 

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
/**  
 *  设置frame只能控制按钮的大小  
 */  
btn.frame= CGRectMake(0, 0, 40, 44);  
[btn addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside];  
UIBarButtonItem *btn_right = [[UIBarButtonItem alloc] initWithCustomView:btn];  
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]   
                                   initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace   
                                   target:nil action:nil];  
/**  
 *  width为负数时,相当于btn向右移动width数值个像素,由于按钮本身和边界间距为5pix,所以width设为-5时,间距正好调整  
 *  为0;width为正数时,正好相反,相当于往左移动width数值个像素  
 */  
negativeSpacer.width = -5;   
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:negativeSpacer, btn_right, nil];  


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值