当通过xcode5的xibdevise时,导航栏button项目图像的颜色是不同的
我的问题是,我使用XIB创build导航栏button,但是当我要将图像设置为酒吧button,然后图像颜色是不同的作为orignal图像。
这是我的原始形象。
在导航栏button项目上添加该图像之后,看起来像这样
首先,我同意@ Desdenova的评论。
这两个图像看起来不一样,每条线都有硬的直angular边缘,而另一条则是圆angular的。
确保您使用的是正确的图像文件。
如果是这种情况,真棒,解决问题而不会偏离你的xib
实现。 如果没有,只要以编程方式进行(按@shankars代码)。
但另一件需要注意的是,我遇到了将自定义图像文件设置为button的问题,图像被调整的地方…确保在将图像设置为button时使用UIImageRenderingModeAlwaysOriginal
:
Objective-C的:
[button setImage:[[UIImage imageNamed:@"imageName.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
迅速:
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;
您可以编程创build导航栏button而不是直接的故事板,这不会影响原始图像的颜色
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; }
因为ios7故事板有问题,我面临如下修复。 设置你的色调颜色作为图像的颜色
你需要设置色调以及 – 为我工作 – 您可以通过代码生成UIBarButtonItem,如下所示:
#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;