更改UIButton的imageview的alpha

时间:2016-01-27 14:37:55

标签: ios objective-c uibutton

有没有办法改变UIButton的imageview的alpha?我已经尝试过对UIButton进行子类化并在代码下面做,但它不起作用。

self.imageView.alpha = 0.0;

我知道可以通过将外部UIImageView作为子视图添加到UIButton来完成,但我想知道它是否可能没有它。谢谢!

5 个答案:

答案 0 :(得分:4)

可能是一种hacky方式

for (UIView *view in myButton.subviews) {
    if ([view isKindOfClass:[UIImageView class]]) {
          view.alpha = 0.5;
    }
}

答案 1 :(得分:1)

使用子类(将在布局更改后继续存在)

override func layoutSubviews() {
    super.layoutSubviews()
    if let imageView = imageView {
        imageView.alpha = 0.2
    }
}

没有子类(瞬态,适合动画)

if let imageView = imageButton.imageView {
    imageView.alpha = CGFloat(sender.value)
}

子类源代码

@IBDesignable class FadeButton: UIButton {

    @IBInspectable var imageAlpha: CGFloat = 1 {
        didSet {
            if let imageView = imageView {
                imageView.alpha = imageAlpha
            }
        }
    }
    override func layoutSubviews() {
        super.layoutSubviews()
        if let imageView = imageView {
            imageView.alpha = imageAlpha
        }
    }
}

使用imageButton.imageAlpha = alpha

进行调用

<强>演示

Fade demo

►在GitHub上找到此解决方案,并在Swift Recipes上找到其他详细信息。

答案 2 :(得分:1)

结束对其他答案的评论:子类化和/或添加另一个= $s"是实现持久性,依赖性行为的最简单选择。

答案 3 :(得分:0)

您可以通过更改UIImage的Alpha。

来实现

有关Swift版本的信息,请参阅this answer;有关Obj-C版本,请参阅this one

答案 4 :(得分:0)

最近我自己也需要类似的东西。我想要一个按钮,可以在其中添加图像作为背景,然后在图形上覆盖半透明颜色,以创建自定义的彩色图像按钮类型的东西。

我发现的方式是:

  • UIImageView(包含所需的图像)
  • UIView(用于保存alpha = 0.7ish的颜色)
  • UIButton无色/透明。

它们都具有相同的大小,宽度,位置,并按上述顺序分层。 这样,您可以决定图像是什么(如果需要,还可以指示其Alpha),在图像顶部有彩色的覆盖层(需要Alpha),然后在顶部具有透明的可单击按钮。