UIButton的SetTint不会成立

时间:2015-10-02 13:13:37

标签: ios objective-c uibutton

我正在通过网络加载UIButton的图片:

NSURL *imageURL = [NSURL URLWithString:[ruleImageArr objectAtIndex:0]];
NSData *data = [NSData dataWithContentsOfURL:imageURL];
[self.classicBackgroundButton setImage:image forState:(UIControlStateNormal)];

哪个工作正常。因此,当用户点击它时我想要按钮setTint。我正是这样做的:

- (IBAction)classicBackgroundButtonPressed:(id)sender {
    [self.classicBackgroundButton setTintColor:[UIColor greenColor]];
}

但它不起作用。似乎无法弄清楚问题是什么? 我在stackOverFlow上搜索了它,但它主要是我可以替换UIButton图像。这些图像是从网页加载的,选择它们应该突出显示它们,以便感觉这个按钮被选中。任何帮助都会得到解决。

3 个答案:

答案 0 :(得分:0)

UiImage必须具有模板渲染模式才能使用色调。像这样:

UIImage *imageTint = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[button setImage:imageTint forState:UIControlStateNormal]; 

答案 1 :(得分:0)

你可以使用另一个UIControlState来管理它。

NSURL *imageURL = [NSURL URLWithString:[ruleImageArr objectAtIndex:0]];
NSData *data = [NSData dataWithContentsOfURL:imageURL];
[self.classicBackgroundButton setImage:image forState:(UIControlStateSelected)];
[self.classicBackgroundButton setImage:image forState:(UIControlStateHighlighted)];
[self.classicBackgroundButton setImage:image forState:(UIControlStateNormal)];

答案 2 :(得分:0)

改为使用

- (IBAction)classicBackgroundButtonPressed:(UIButton *)sender {

    [sender setTintColor:[UIColor greenColor]];
}