2014-03-27 66 views
4

我的UIButton的一部分是UIImage,IOS 7将其颜色从黑色更改为蓝色。我尝试了这里提供的解决方案:将按钮类型更改为UIButtonTypeSystem,但这并没有帮助,图像仍然是蓝色。这里是我使用的通用代码:IOS 7按钮图像颜色

UIButton *iWantPlan = [UIButton buttonWithType:UIButtonTypeSystem]; 
iWantPlan.frame = CGRectMake(self.view.bounds.size.width/2-bgImageWidth/2, planBg.frame.origin.y + planBg.frame.size.height + 20, bgImageWidth, bgImageWidth/4+5); 
iWantPlan.titleLabel.font = [UIFont systemFontOfSize:20]; 
[iWantPlan addTarget:self action:@selector(goToPersonalDetails) forControlEvents:UIControlEventTouchDown]; 
[self.view addSubview:iWantPlan]; 

iWantPlan.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight; 
iWantPlan.imageView.frame = CGRectMake(bgImageWidth - 20, 10, 25, 25); 
UIImage *viImage = [UIImage imageNamed:@"Icon_V.png"]; 
UIImage *viImageTap = [UIImage imageNamed:@"Icon_V_Tap.png"]; 
[iWantPlan setImage:viImage forState:UIControlStateNormal]; 
[iWantPlan setImage:viImageTap forState:UIControlStateSelected]; 

有没有解决方案? (和公正顺便说一句,这是很无奈:)

回答

10

有了:imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal确保你没有蓝色的背景:

UIImage *viImage = [[UIImage imageNamed:@"Icon_V.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
UIImage *viImageTap = [[UIImage imageNamed:@"Icon_V_Tap.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

Apple Documentation UIImageRenderingMode
总是吸引原始图像,而无需治疗它作为一个模板:UIImageRenderingModeAlwaysOriginal

此外,它可以帮助你:

UIButton *iWantPlan = [UIButton buttonWithType:UIButtonTypeCustom]; 
... 
[iWantPlan setImage:viImageTap forState:UIControlStateHighlighted]; 
3

只需将您的按钮类型UIButtonTypeSystem更改为UIButtonTypeCustom

+0

此工作,简单的解决方案.. – TharakaNirmana