下面举例为:自定义一个上图下文字,距右边屏幕间距为10的BarButtonItem
UIButton * paiXuBtn = [UIButton buttonWithType:UIButtonTypeCustom];
paiXuBtn.frame = CGRectMake(0, 0, 30, 50);
[paiXuBtn setTitle:@"排序" forState:UIControlStateNormal];
[paiXuBtn setTitleColor:MainColor forState:UIControlStateNormal];
paiXuBtn.titleLabel.font = [UIFont boldSystemFontOfSize:12];
[paiXuBtn setImage:[UIImage imageNamed:@“XXX”] forState:UIControlStateNormal];
paiXuBtn.contentHorizontalAlignment = UIControlContentVerticalAlignmentCenter;//使图片和文字水平居中显示
[paiXuBtn setTitleEdgeInsets:UIEdgeInsetsMake(paiXuBtn.imageView.frame.size.height ,-paiXuBtn.imageView.frame.size.width, 0.0,0.0)];//文字距离上边框的距离增加imageView的高度,距离左边框减少imageView的宽度,距离下边框和右边框距离不变
[paiXuBtn setImageEdgeInsets:UIEdgeInsetsMake(-15, 0.0,0.0, -paiXuBtn.titleLabel.bounds.size.width*2)];//图片距离右边框距离减少图片的宽度,其它不边
UIBarButtonItem * naItem= [[UIBarButtonItem alloc] initWithCustomView:paiXuBtn];
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSpacer.width = -10;
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:negativeSpacer, naItem, nil];