UIbarbuttonItem图像看起来拉长/加厚

问题描述:

我已经在工具栏上添加了自定义UIbarButtonItems。一切都是通过NIB文件创建的。我看到图像被拉伸。我的图像是视网膜20x20和40x40。他们是PNG文件,我确保他们不包含任何投影和使用抗锯齿。目前工具栏看起来像这样。 enter image description hereUIbarbuttonItem图像看起来拉长/加厚

如果您看到,当未添加为barbuttonItem而是作为imageview添加时,相同的图像显示为尖锐。我怎样才能解决这个问题。

+0

看看这个答案。 http://*.com/questions/7101608/setting-image-for-uibarbuttonitem-image-stretched – Yan

你可以试着在你的viewDidLoad方法中创建你的UIBarButtonItems吗?

这是我如何做一个UINavigationBar,所有图像看起来很好:

UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
UIImage *rightButtonImage = [UIImage imageNamed:@"img1.png"]; 
[rightButton setImage:rightButtonImage forState:UIControlStateNormal]; 
rightButton.frame = CGRectMake(0.0, 7.0, rightButtonImage.size.width, rightButtonImage.size.height); 
[rightButton addTarget:self action:@selector(method1) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:rightButton] autorelease]; 


UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
UIImage *leftButtonImage = [UIImage imageNamed:"img2.png"]; 
[leftButton setImage:leftButtonImage forState:UIControlStateNormal]; 
leftButton.frame = CGRectMake(10.0, 7.0, leftButtonImage.size.width, leftButtonImage.size.height); 
[leftButton addTarget:self action:@selector(method2) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:leftButton] autorelease]; 

method1method2都是无效的方法:-(void)method

,并添加右侧2个按钮,我做了什么像这样:

UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
UIImage *rightButtonImage = [UIImage imageNamed:@"img3"]; 
[rightButton setImage:rightButtonImage forState:UIControlStateNormal]; 
rightButton.frame = CGRectMake(0.0, 7.0, rightButtonImage.size.width, rightButtonImage.size.height); 
[rightButton addTarget:self action:@selector(method3) forControlEvents:UIControlEventTouchUpInside]; 

UIButton *middleRightButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
UIImage *middleRightButtonImage = [UIImage imageNamed:@"img4"]; 
[middleRightButton setImage:middleRightButtonImage forState:UIControlStateNormal]; 
middleRightButton.frame = CGRectMake(0.0, 7.0, middleRightButtonImage.size.width, middleRightButtonImage.size.height); 
[middleRightButton addTarget:self action:@selector(method4) forControlEvents:UIControlEventTouchUpInside]; 

self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:[[[UIBarButtonItem alloc] initWithCustomView:rightButton] autorelease], [[[UIBarButtonItem alloc] initWithCustomView:middleRightButton] autorelease], nil]; 

对于UIToolbar您必须添加如下产品:

[toolbar setItems:[NSArray arrayWithObject:item1, item2, item3, item4, nil]]; 
+1

感谢您的帮助。我没有设计用于Interface Builder的图像,并直接作为barbuttonItem使用。走你的路线,它的工作! – inspeero