有没有办法改变导航项目上的栏button项目的宽度和插入?

我想在我的MVC导航项目上的一个栏button项目上使用视网膜分辨率图像(40x40p)。 当我设置图像看起来像水平方向拉伸:

拉伸的导航项目按钮图像

注意我也有苹果规格要求的视网膜分辨率(60px60p)的工具栏button图像。 当尺寸参数具有默认值(即宽度= 0,insets; t = 0时,B = 0,L = 0,R = 0:

在这里输入图像说明

然而,不像导航器项目,在工具栏的情况下,我可以成功地从IB更改这些值。 当我设置width = 30,insets t = 5,b = 5,l = 5,r = 5时,

完美缩放的高分辨率工具栏按钮图像

当我使用“大小”检查器并试图设置导航项目的栏button项目的宽度和插入值时,它似乎没有效果。 齿轮图像仍然看起来拉伸。

我也尝试通过代码在导航项目上创build栏button项目,并在那里设置宽度和插入内容,它也不工作:

UIImage *image = [UIImage imageNamed:@"073-Setting@2x.png"]; //-------------------------------------------------------------------- // This line had no effect for a bar button item on a navigation item: image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(5.0,5.0,5.0,5.0)]; //-------------------------------------------------------------------- UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(handleBack:)]; //-------------------------------------------------------------------- // This line had no effect for a bar button item on a navigation item: button.width = 30; //-------------------------------------------------------------------- 

任何想法,无论我做错了什么,或者这看起来像一个错误。 我的部署目标是IOS 5.0。

我现在明白了这个问题背后的原因。 我不知道我需要在应用程序捆绑包中打包普通和高分辨率(@ 2 x)图像。 我天真地想包括高分辨率的图像,并期望它的工作。 由于我只有iPhone故事板,包括每个图像的20和40像素版本,解决了我的问题。

因此,不需要使用button宽度或插入。 这个问题现在已经解决了。