选择时无法设置 UIButton 的背景颜色?
Posted
技术标签:
【中文标题】选择时无法设置 UIButton 的背景颜色?【英文标题】:Can't set background color of a UIButton when selected? 【发布时间】:2014-09-19 04:04:43 【问题描述】:在 UIButton 子类中:
- (void) setHighlighted:(BOOL)highlighted
[super setHighlighted:highlighted];
if (highlighted)
self.backgroundColor = [UIColor redColor];
else
self.backgroundColor = [UIColor blueColor];
- (void)setSelected:(BOOL)selected
[super setSelected:selected];
if (selected)
self.backgroundColor = [UIColor greenColor]; //this happens
else
self.backgroundColor = [UIColor blueColor];
当按钮突出显示时,我看到红色。但是当我设置 button.selected = YES 时,我从来没有看到绿色。为什么 setHighlighted 有效而 setSelected 无效?
我可以在“发生这种情况”行设置一个断点,它就会发生。但按钮的背景颜色不会变为绿色。
【问题讨论】:
您在界面生成器中设置了哪些属性? 那里有几个答案。 ***.com/questions/4049103/… 看起来一个常见的解决方案是设置一个基本上是 1x1 像素颜色的背景图像。此解决方案有效,因为您为每个特定状态设置了背景图像。我不太确定为什么您的代码不起作用。按钮被选中后是否立即取消选中? 【参考方案1】:您是否在按钮的 UIControlEventTouchUpInside 操作中设置了 selected
属性?如果是这样,您的 setHighlighted:
方法将在 setSelected:
之后再次被调用,因此 backgroundColor
被设置回蓝色。
【讨论】:
是的,这可能就是正在发生的事情。您知道任何解决方法吗? 我可能只是添加一个检查两种状态的updateBackgroundColor
(或其他)方法,然后从覆盖的设置器中调用该方法。以上是关于选择时无法设置 UIButton 的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章
为uibutton背景图像iphone sdk设置渐变颜色(颜色)
目标 - 突出显示/选择C按钮时,突出显示/选择背景颜色和字体颜色