CAGradientLayer没有跨越我的按钮的整个宽度 - xcode

时间:2016-08-24 16:23:29

标签: ios swift xcode cagradientlayer

我是xcode的新手,我在一个按钮上放置了一个渐变图层,并没有填充整个宽度。我不确定我做错了什么。我的代码在这里,以及它如何呈现的截图。

let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.btnSavePhoto.bounds
let color1 = UIColor(red:0.05, green:0.29, blue:0.49, alpha:1.0).CGColor as CGColorRef
let color2 = UIColor(red:0.08, green:0.23, blue:0.39, alpha:1.0).CGColor as CGColorRef
gradientLayer.colors = [color1, color2]
gradientLayer.locations = [0.0, 1.0]
self.btnSavePhoto.layer.addSublayer(gradientLayer)

enter image description here

1 个答案:

答案 0 :(得分:2)

似乎您的按钮稍后会改变它的大小(由于自动调整遮罩或约束),但gradientLayer保持原始(较小)大小。这是因为图层不会自动调整大小。 您可以创建一个自定义UIButton子类,该子类将更新layoutSubviews方法中自定义图层的大小。 或者您可以创建自定义图层子类,尽管它还需要创建UIButton子类,如此问题中所述:CALayers didn't get resized on its UIView's bounds change. Why?