我正在使用xib创建一个导航栏按钮,但是当我将图像设置为该按钮时,图像的颜色与原始图像不同。
这是我的原始图像。
这是我的原始图像。
在将该图像添加到导航栏按钮项后,它看起来像这样
在将该图像添加到导航栏按钮项后,它看起来像这样
首先,我同意@Desdenova的评论。
这两个图像看起来不一样,一个有每条线的硬直角边缘,而另一个则是圆形的。
确保您使用正确的图像文件。
如果是这种情况,太好了,问题可以在不偏离您的xib
实现的情况下解决。如果不是,请按照@shankars的代码进行编程解决。
但需要注意的另一件事是,我曾经遇到过将自定义图像文件设置为按钮时出现问题的情况,其中图像被修改...请确保在将图像设置为按钮时使用UIImageRenderingModeAlwaysOriginal
:
Objective-C:
[button setImage:[[UIImage imageNamed:@"imageName.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
Swift:
someBarButtonItem.image = UIImage(named: "yourPictureName")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
Swift 3:
someBarButtonItem.image = UIImage(named:"myImage")?.withRenderingMode(.alwaysOriginal)
这是一个工作代码示例
UIImage *myImage = [UIImage imageNamed:@"myImageFile.png"];
myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithImage:myImage style:UIBarButtonItemStylePlain target:self action:@selector(menuObject:)];
self.navigationItem.leftBarButtonItem = menuButton;
self.navigationItem.leftBarButtonItem=[self backButton];
- (UIBarButtonItem *)backButton
{
UIImage *image = [UIImage imageNamed:@"image.png"];
CGRect buttonFrame = CGRectMake(0, 0, image.size.width, image.size.height);
UIButton *button = [[UIButton alloc] initWithFrame:buttonFrame];
//[button addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[button setImage:image forState:UIControlStateNormal];
UIBarButtonItem *item= [[UIBarButtonItem alloc] initWithCustomView:button];
return item;
}
#define setTurqoiseColor [UIColor colorWithRed:68.0f/255.0f green:181.0f/255.0f blue:223.0f/255.0f alpha:1.0]
UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithImage:buttonImage style:UIBarButtonItemStyleBordered target:self action:@selector(toggleMenu)];
menuButton.tintColor = setTurqoiseColor;