如何更改UIButton的背景图像?
我在我的应用程序中创建了数百个动态UIButtons
。在创建这些UIButtons
时,我给每一个标签。 我想要做的是能够在点击时更改UIButton
的背景图像。 如果我有一个带有标签的UIButton
,而不是如何更改UIButton
的背景图片?如何更改UIButton的背景图像?
您可以更改按钮图像按发件人标签一样:
-(IBAction)changeImage:(id)sender
{
[sender setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.png",[sender tag]]] forState:UIControlStateNormal];
}
,如果你有一个数组所有映像文件名,那么你可以如下执行。
-(IBAction)changeImage:(id)sender
{
[sender setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@.png",[MyImagearray ObjectAtindex:[sender tag]]]] forState:UIControlStateNormal];
}
如果这不是你想要的,然后正确指定你的问题。
希望它有帮助。
-(IBAction)btnclicked:(id)sender
{
int tag=sender.tag;
UIImage * newImage=[UIImage imageNamed:[NSString stringWithFormat:@"%d.png",tag]];
[sender setBackgroundImage:newImage forState:UIControlStateNormal];
}
///This bellow line for Normal Image with button tag just put image with tag and add Normal.
[yourButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%dNormal.png",btnGo.tag]] forState:UIControlStateNormal];
///This bellow line for UIControlStateHighlighted Image with button tag just put image with tag and add Highlited.
[yourButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%dHighlited.png",btnGo.tag]] forState:UIControlStateHighlighted];
///This bellow line for UIControlStateSelected Image with button tag just put image with tag and add Selected.
[yourButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%dSelected.png",btnGo.tag]] forState:UIControlStateSelected];
,并在你的按钮点击方法只是将其设置为a selected ..
对于EX:
-(IBAction)btnClicked:(id)sender{
UIButton *btn = (UIButton*)sender;
[btn setSelected:YES];
}
@Vishal这个代码是用于整个状态的,也是整个按钮与其单独的图像也放在这里的图像的静态名称,但它的工作看.. –
的方法有很多,当你点击一个按钮,但两个最好的办法将是没有把它变成一个switch statement
像这样
- (IBAction)shouldChangeImage:(id)sender
{
switch([sender tag]) {
case 1:
[sender setBackgroundImage:[UIImage imageNamed:@"myFirstImage.png"] forState:UIControlStateNormal];
break;
case 2:
[sender setBackgroundImage:[UIImage imageNamed:@"mySecondImage.png"] forState:UIControlStateNormal];
break;
// And so on for each button tag and then have a default for those that are not listed.
default:
[sender setBackgroundImage:[UIImage imageNamed:@"myDefaultImage.png"] forState:UIControlStateNormal];
break;
}
}
这是不好的这是可以做到数百个按钮,但仍然有效。如果所有图像的命名完全不同,这也是最好的方法,但是如果您将图像命名为相同,并且只需使用可创建更高效代码的标签编号进行前缀,那么读起来会更容易。你会这样做。
- (IBAction)shouldChangeImage:(id)sender
{
[sender setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"myImage-%d.png",[sender tag]]] forState:UIControlStateNormal];
}
请注意整个事情是如何在一行上,因此这样更容易阅读,更高效。
你也可以使用else if statement
,但如果你有几百个,我会推荐一种方式。
希望这会有所帮助
他试图添加100个或更多的按钮,在这种情况下并不好。 –
@SibaPrasadHota同意添加只是作为一个选项没有更多的,然后他可以让他的头脑使用哪一个。我总是喜欢给出一些方法来给这个人一个最适合他们的选择。尽管如此,我的确推荐了更短的路线 – Popeye
你应该在提问之前做一点研究,这里有几百个博客覆盖了这个问题。 – NSAddict