用其他图像更改 uibutton 的图像

Posted

技术标签:

【中文标题】用其他图像更改 uibutton 的图像【英文标题】:change image of uibutton with other image 【发布时间】:2009-10-10 06:08:04 【问题描述】:

这样,我创建了自定义按钮并设置了图像。我在加载视图中为上面的 nonselectedImage 和 selectedImage 设置了图像。加载视图时,未选择的图像可见。当我按下按钮时,该事件被调用,但它无法更改操作方法中设置的图像。

starImageBtn5 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
starImageBtn5.frame = CGRectMake(231.0, 67.0, 20.0, 20.0);
[starImageBtn5 setBackgroundImage:nonSelectedImage forState:UIControlStateNormal];
[cell.contentView addSubview:starImageBtn5];
[starImageBtn5 addTarget:self action:@selector(actionForStar5) forControlEvents:UIControlEventTouchUpInside]; 

[starImageBtn5 发布];

这是我尝试更改图像的方法。starOneSelected 是一个布尔变量。

- (void) actionForStar1

if(starOneSelected)

    UIImage *image =[UIImage imageNamed:@"star-selected.png"] ;
              // [UIImage imageNamed:@"star-nonselected.png"];
    [starImageBtn1 setBackgroundImage:image forState:UIControlStateNormal];
    //starImageBtn1.currentBackgroundImage= image;
    starOneSelected = FALSE;

else

 //[nonSelectedImage release];
 [starImageBtn1 setBackgroundImage:selectedImage forState:UIControlStateNormal];
 //UIButton *test = starImageBtn1.
 starOneSelected = TRUE;


请查看代码并尝试帮助我。我已经浏览了此论坛以及其他论坛中发布的所有问题,但不知道我哪里出错了。 提前致谢。

【问题讨论】:

【参考方案1】:

不要在 actionForStar1 方法中更改图像,而是在创建按钮时进行:

[starImageBtn5 setBackgroundImage:nonSelectedImage forState:UIControlStateNormal];
[starImageBtn5 setBackgroundImage:selectedImage forState:UIControlStateSelected];

【讨论】:

你把代码放在哪里了?不要在 actionForStar1 方法中执行此操作,而是在您创建按钮并将其添加到 contentView 的位置。

以上是关于用其他图像更改 uibutton 的图像的主要内容,如果未能解决你的问题,请参考以下文章

更改以编程方式创建的单击 UIButton 的背景图像

UIButton 背景图像 以编程方式更改

即使在图像被更改或删除后,以编程方式添加的 UIButtons 也会保留背景图像

在 Swift 中按下 uibutton 时更改色调图像颜色

按下时更改图像的 UIButton - 但更改图像时效果不佳

已知如何用标签值更改 UIButton 背景图像?