我是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)

ios - CAGradientLayer没有跨越按钮的整个宽度-Xcode-LMLPHP

最佳答案

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

09-27 23:14