有没有办法改变UIButton的imageview的alpha?我已经尝试过对UIButton进行子类化并在代码下面做,但它不起作用。
self.imageView.alpha = 0.0;
我知道可以通过将外部UIImageView作为子视图添加到UIButton来完成,但我想知道它是否可能没有它。谢谢!
答案 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
<强>演示强>
►在GitHub上找到此解决方案,并在Swift Recipes上找到其他详细信息。
答案 2 :(得分:1)
结束对其他答案的评论:子类化和/或添加另一个= $s"
是实现持久性,依赖性行为的最简单选择。
答案 3 :(得分:0)
您可以通过更改UIImage
的Alpha。
有关Swift版本的信息,请参阅this answer;有关Obj-C版本,请参阅this one。
答案 4 :(得分:0)
最近我自己也需要类似的东西。我想要一个按钮,可以在其中添加图像作为背景,然后在图形上覆盖半透明颜色,以创建自定义的彩色图像按钮类型的东西。
我发现的方式是:
它们都具有相同的大小,宽度,位置,并按上述顺序分层。 这样,您可以决定图像是什么(如果需要,还可以指示其Alpha),在图像顶部有彩色的覆盖层(需要Alpha),然后在顶部具有透明的可单击按钮。