UIButton 图像在正常状态下未显示
Posted
技术标签:
【中文标题】UIButton 图像在正常状态下未显示【英文标题】:UIButton image not showing up on normal state 【发布时间】:2016-08-31 08:25:06 【问题描述】:我正在尝试使用按钮设置一个复选框,这就是我正在做的事情:
int checkBoxWidth = foregroundHeight / 12.0;
int checkBoxHeight = foregroundHeight / 12.0;
UIButton* checkBox = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, checkBoxWidth, checkBoxHeight)];
//[checkBox setBackgroundImage:[Utility getEmptyCheckBoxOutIcon] forState:UIControlStateNormal];
//[checkBox setBackgroundImage:[Utility getCheckBoxOutIcon] forState:UIControlStateSelected];
[checkBox setImage:[Utility getEmptyCheckBoxOutIcon] forState:UIControlStateNormal];
[checkBox setImage:[Utility getCheckBoxOutIcon] forState:UIControlStateSelected];
checkBox.layer.borderWidth = 1.0;
checkBox.layer.borderColor = [Utility primaryColor].CGColor;
checkBox.layer.cornerRadius = cornerRadius;
[switchView addSubview:checkBox];
但图像仅在我触摸按钮时出现,在任何其他状态下图像都不会出现。有什么遗漏吗?
【问题讨论】:
你在做什么按钮点击,也上传该代码。 如果您的按钮类型是 system ,请将其更改为 custom @sanjeet,我将上传按钮点击代码,但此时应该没关系吧?即使我没有单击按钮,图像也应该显示为正常状态,不是吗?令人费解的是,图像仅在我触摸按钮时才显示,然后它就消失了。再次。 @vishnuvarthan 按钮是UIButton* checkBox
你能举例说明你的意思吗?
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
【参考方案1】:
您必须更改按钮状态才能更改图像。使用下面的代码来达到你想要的结果。
int checkBoxWidth = foregroundHeight / 12.0;
int checkBoxHeight = foregroundHeight / 12.0;
UIButton* checkBox = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, checkBoxWidth, checkBoxHeight)];
[checkBox setImage:[Utility getEmptyCheckBoxOutIcon] forState:UIControlStateNormal];
[checkBox setImage:[Utility getCheckBoxOutIcon] forState:UIControlStateSelected];
[checkBox setImage:[Utility getCheckBoxOutIcon] forState:UIControlStateHighlighted];
[checkBox setImage:[Utility getCheckBoxOutIcon] forState:UIControlStateSelected | UIControlStateHighlighted];
[checkBox addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
checkBox.layer.borderWidth = 1.0;
checkBox.layer.borderColor = [Utility primaryColor].CGColor;
checkBox.layer.cornerRadius = cornerRadius;
[switchView addSubview:checkBox];
并添加这个目标函数
-(IBAction)buttonClicked:(UIButton*)sender
sender.selected = !sender.selected;
【讨论】:
这不是问题,按钮应该首先出现。问题不在于按钮没有出现。按钮显示,但未应用色调。这样白色按钮和白色背景看起来一样。checkBox.tintColor = [Utility primaryColor];
的实际问题不起作用。另一个问题是按钮被添加到子视图中。所以你的第一个答案确实有助于调试:)以上是关于UIButton 图像在正常状态下未显示的主要内容,如果未能解决你的问题,请参考以下文章
UIButton 为状态正常设置图像,在不同状态下隐藏该图像