[iOS_Dev] 调整间距---导航栏右边的按钮

[iOS_Dev]调整间距---导航栏右边的按钮


//显示导航栏右边的按钮
- (void)showCustomNavigationRightButtonWithTitle:(NSString *)aTitle image:(UIImage *)aImage hightlightImage:(UIImage *)hImage
{//重写父类方法
    
    //右边按钮
    UIButton *rightBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 51, 41)];
    CGSize imageSize = CGSizeMake(aImage.size.width, aImage.size.height);
    UIEdgeInsets imageEdgeInsets = UIEdgeInsetsMake(rightBtn.frame.size.height/2-imageSize.height/2, rightBtn.frame.size.width/2-imageSize.width/2,
                                                    rightBtn.frame.size.height/2-imageSize.height/2, rightBtn.frame.size.width/2-imageSize.width/2);
    rightBtn.imageEdgeInsets = imageEdgeInsets;
    /**
     *  设置frame只能控制按钮的大小
     */
    
    if(aTitle)
    {
        [rightBtn setTitle:aTitle forState:UIControlStateNormal];
        [rightBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        rightBtn.titleLabel.font = [UIFont systemFontOfSize:15];
    }
    
    [rightBtn setImage:aImage forState:UIControlStateNormal];
    if(hImage)
    {
        [rightBtn setImage:hImage forState:UIControlStateHighlighted];
    }
    
    
    //导航栏右边按钮
    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:rightBtn];
    
    //调整间距
    UIBarButtonItem *navigationSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    /**
     *  width为负数时,相当于rightButton往 右移动width数值个像素,由于按钮本身和边界间距为5pix,所以width设为-5时,间距正好调整为0;
     *  width为正数时,相当于rightButton往 左移动width数值个像素
     */
    navigationSpacer.width = -17; //间距减小17pix
    
    
    [rightBtn addTarget:self action:@selector(onNavigationRightButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:navigationSpacer,rightButton, nil];
    rightBtn.backgroundColor = [UIColor yellowColor];
    [navigationSpacer release];
    [rightBtn release];
    [rightButton release];
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值