Ios 自定义rightBarButtonItem图像

Ios 自定义rightBarButtonItem图像,ios,objective-c,uinavigationcontroller,uinavigationbar,uibarbuttonitem,Ios,Objective C,Uinavigationcontroller,Uinavigationbar,Uibarbuttonitem,我正在尝试使用自定义RightBarButtonim图像,在我的ViewWillAspect方法中使用以下代码: // Custom rightBarButtonItem UIImage *buttonImage = [UIImage imageNamed:@"menu_button"]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:buttonImage forSta

我正在尝试使用自定义RightBarButtonim图像,在我的ViewWillAspect方法中使用以下代码:

    // Custom rightBarButtonItem
UIImage *buttonImage = [UIImage imageNamed:@"menu_button"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:buttonImage forState:UIControlStateNormal];
button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);
[button addTarget:self action: @selector(handleBackButton)
 forControlEvents:UIControlEventTouchUpInside];

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, buttonImage.size.width - 10, buttonImage.size.height - 10)];
[view addSubview:button];

UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:view];
self.navigationItem.rightBarButtonItem = customBarItem;
结果如下:

但我希望它更小,就像我在草图3中设计的那样:

我需要做些什么来实现这一点

谢谢!
Erik

我认为您需要调整图像边缘插入:

[button setImageEdgeInsets:UIEdgeInsetsMake(topInset, leftInset, bottomInset, rightInset)];

建议您将UIIMage的渲染模式设置为UIImageRenderingModeAlwaysOriginal,如下所示

UIImage *barButtonimage = [[UIImage imageNamed:@"menu_button"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
然后您可以设置uibarbuttonite的图像,如下所示

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage: barButtonimage style:UIBarButtonItemStylePlain target:self action:@selector(buttonAction:)];
UIImageRenderingModeAlwaysOriginal:始终绘制原始图像,而不将其视为模板


看起来你只提供了一个视网膜资源,并且运行在一个非视网膜设备上。@lan MacDonald我在我真正的iPhone 5s上运行它,它有一个视网膜显示器,不是吗?是的,iPhone 5s有一个视网膜显示器。我只是在评论它的样子。我不能100%确定这里发生了什么,使您的图像显示不正确。不同的插图是什么?这取决于按钮图像的大小和按钮的大小。使用断点或NSLog输出按钮的宽度和高度。设置插图,使添加到图像非视网膜宽度的左侧和右侧插图等于按钮的宽度。类似地,添加到非视网膜图像高度的顶部和底部插图应该等于按钮的高度。到底什么是插图?你也可以进行实验。比较你提供的两张图片,看起来像是将顶部和底部的插图设置为6,侧面设置为9可能会起作用。我进行了实验,发现了9和10,所以我们彼此非常接近:P@Peter