iOS栏项目图像显示错误的颜色

时间:2015-09-23 11:06:05

标签: ios swift storyboard

我有一个带条形图条的栏,我的.png图像有绿色,但是当我将它添加到故事板时,它显示为蓝色。

如何让它按原样显示图像?

enter image description here

enter image description here

5 个答案:

答案 0 :(得分:3)

使用UIBarButton的tintColor为图像设置所需的颜色。 如果绝对需要使用原始图像颜色,请使用此设置图像:

[aBarButton setImage:[[UIImage imageNamed:@"xyz.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

答案 1 :(得分:2)

The docs对此有点含糊不清

  

条形图上显示的图像来自此图像。如果这   图像太大而无法放在条形图上,它可以缩放以适应。通常情况下,   工具栏和导航栏图像的大小为20 x 20磅。该   源图像中的alpha值用于创建图像不透明   值被忽略。

基本上这就是说你提供的图像不是实际显示的图像。相反,系统使用图像的alpha蒙版和项目的tintColor来生成最终显示。

答案 2 :(得分:2)

以编程方式添加图片

[button setImage:[[UIImage imageNamed:@"imageName.png"]   imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]     forState:UIControlStateNormal];

如果它不起作用,那么试试这个: -

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;

如果它不起作用,那么试试这个: -

#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;

答案 3 :(得分:1)

要设置条形项全局的色调颜色,请在App Delegate中添加以下代码行

UIBarButtonItem *barButtonAppearance = [UIBarButtonItem appearance];
[barButtonAppearance setTintColor:[UIColor redColor]]; // set to your color
[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];

答案 4 :(得分:1)

您必须设置UITabBar tintColor。

enter image description here

如果您想添加自定义颜色/渐变,可以设置tabBarItem图像和selectedImage属性,如下所示:

 customTabBarItem.selectedImage = UIImage(named: "customSelectedImage")!.imageWithRenderingMode(.AlwaysOriginal)
 customTabBarItem.image = UIImage(named: "customUnselectedImage")!.imageWithRenderingMode(.AlwaysOriginal)