我在这里疯了。我有一个按钮,带有一个复选标记作为其图像。我已将代码简化为单击按钮的简单用户操作,该操作应替换背景图像。但是它的形象不会改变。
- (IBAction)sendResults:(UIButton *)sender
{
UIImage *image = [UIImage imageNamed:@"unchecked_checkbox"];
if (image){
NSLog(@"image is good");
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateNormal];
} else {
NSLog(@"problem");
}
}
以下是控制台输出:image is good
是的,复选框有一个插座。我已经证实它是正确的。
我甚至尝试将图像设置为nil,但它仍然没有消失!
有什么想法?谢谢!
答案 0 :(得分:2)
这种情况正在发生,因为您正在更改UIButton的图像
UIImage *image = [UIImage imageNamed:@"checked_checkbox.png"]; [btn setImage:image forState:UIControlStateNormal];
在更改背景之前
[btn setBackgroundImage:[UIImage imageNamed:@“unchecked_checkbox.png”] forState:UIControlStateNormal];
您应该一次只更改setBackgroundImage:或setImage:
BackgroundImage位于UIButton的图像层
之下答案 1 :(得分:0)
首先包括图像文件的扩展名(.png,.jpeg)。
UIImage *image = [UIImage imageNamed:@"unchecked_checkbox.png"];
然后尝试
if (image)
{
NSLog(@"image is good");
if(self.resultsCheckBox){
[self.resultsCheckBox setBackgroundImage:nil forState:UIControlStateNormal];
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateNormal];
[self.view bringSubviewToFront:self.resultsCheckBox];
}
else{
NSLog(@"self.resultsCheckBox not found");
}
} else
{
NSLog(@"problem");
}
或尝试这些所有选项
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateNormal];
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateHighlighted];
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateDisabled];
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateSelected];
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateApplication];
[self.resultsCheckBox setBackgroundImage:image forState: UIControlStateReserved];
答案 2 :(得分:0)
我必须做的是将UIImage放在(透明)UIButton后面,这是我可以改变的图像:
[self.imageView setImage:chosenImage];
[self.imageView setNeedsDisplay];
希望它有所帮助。