设置 UIButton alpha 在 iOS 7 上无法正常工作。
Posted
技术标签:
【中文标题】设置 UIButton alpha 在 iOS 7 上无法正常工作。【英文标题】:Setting a UIButton alpha is not working correctly on iOS 7. 【发布时间】:2014-03-28 02:21:51 【问题描述】:我来回禁用和更改 UIButton
的 alpha,当调用该方法时,它启用按钮,alpha 永远不会改变。
下面的代码在包含按钮的实际 ViewController 中。但我从显示此 ViewController 的不同 ViewController 调用这些方法。
-(void)enableArrow
[self.LocationCirlceButton setEnabled:YES];
[self.LocationCirlceButton setAlpha:1.0f];
-(void)disableArrow
[self.LocationCirlceButton setEnabled:NO];
[self.LocationCirlceButton setAlpha:0.5f];
而且,是的,这个 UI 工作正在主线程上完成。
【问题讨论】:
按钮最初是隐藏的吗? 什么样的uibutton? 【参考方案1】:发现了问题,但很奇怪。我将以下图像设置为禁用,但是该文件以某种方式从应用程序中删除。所以我把它改成了Checkmark_normal
文件,一切正常。
setImage:[UIImage imageNamed:@"Checkmark_disabled.png"] forState:UIControlStateDisabled];
现在:
setImage:[UIImage imageNamed:@"Checkmark_normal.png"] forState:UIControlStateDisabled];
【讨论】:
这并不奇怪。当UIImageView
或UIButton
或UIImage
的任何容器找不到指定的图像时,它总是显示容器的background color
。我猜你的背景颜色是[UIColor clearColor]
。
但它显示的是正常或选中的其他图标之一。它没有显示任何内容,而是显示正常图像或选定图像。【参考方案2】:
将UIButton
设为公共属性并在that different ViewController
而不是ViewController contains the button
中创建方法怎么样?
像这样:
-(void) enableButton
[originalController.button setAlpha:1.0f];
-(void)disableButton
[originalController.button setAlpha:0.0f];
关键是你必须抓住那个特定的ViewController contains the button
才能使它工作(有很多方法可以做到这一点)。
【讨论】:
【参考方案3】:有两个子视图可以控制。你可以打电话
myButton.imageView.alpha = 0.5;
myButton.titleLabel.alpha = 0.5;
或者你可以继承按钮并覆盖setEnabled:
-(void)setEnabled:(BOOL)enabled
super.enabled = enabled;
self.imageView.alpha = enabled ? 1 : 0.5;
self.titleLabel.alpha = self.imageView.alpha;
【讨论】:
以上是关于设置 UIButton alpha 在 iOS 7 上无法正常工作。的主要内容,如果未能解决你的问题,请参考以下文章
如何同时为 UIButton 的 titleLabel 的框架和 alpha 设置动画?
以编程方式更改UIButton的标题颜色,其标题设置为iOS 7中的属性
使用 PNG 背景为 UIButton alpha 设置动画:为啥动画从 alpha = 0 过渡到 alpha = 1 时会变成亮白色?