2015-10-02 8 views
1

我通過網絡加載的UIButton的形象:SetTint的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圖片。這些圖像是從網站加載的,選擇它們應該突出顯示它們,讓人感覺這個按鈕被選中。任何幫助都會遭到破壞。

回答

0

UiImage必須具有模板呈現模式才能使用tint。類似這樣的:

UIImage *imageTint = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 
[button setImage:imageTint forState:UIControlStateNormal]; 
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)]; 
+0

這就是問題所在。選擇後我沒有可以放置的圖像。所以我需要添加色調以獲得選擇此按鈕的感覺。 –

+0

我通常使用透明PNG圖像和色調的作品。 – Lucho

+0

起初圖像是透明的,所以我很容易改變圖像的背景,顯示它被選中。但現在圖像已經改變了,它們覆蓋了'UIImageView'的所有區域,所以現在我想應用tint來實現它,但它不起作用。 –

0

使用這個代替

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

    [sender setTintColor:[UIColor greenColor]]; 
} 
+0

也有可能您的代碼中的某個地方錯誤地引用了該按鈕 –