gpt4 book ai didi

ios - 在 Storyboard 上的方向转换后调整自定义渐变按钮的大小

转载 作者:行者123 更新时间:2023-12-01 19:37:06 24 4
gpt4 key购买 nike

我的自定义按钮的自动布局有问题。

我为按钮创建了一个自定义类,以通过界面生成器添加渐变颜色。

@IBDesignable
class GradientButton: UIButton {

private let gradientLayer = CAGradientLayer()

@IBInspectable
var topGradientColor: UIColor? {
didSet {
setGradient(topGradientColor: topGradientColor, bottomGradientColor: bottomGradientColor)
}
}

@IBInspectable
var bottomGradientColor: UIColor? {
didSet {
setGradient(topGradientColor: topGradientColor, bottomGradientColor: bottomGradientColor)
}
}




private func setGradient(topGradientColor: UIColor?, bottomGradientColor: UIColor?) {
if let topGradient = topGradientColor, let bottomGradient = bottomGradientColor {

self.layer.masksToBounds = true
gradientLayer.frame = bounds
gradientLayer.colors = [topGradient.cgColor, bottomGradient.cgColor]
gradientLayer.borderColor = layer.borderColor
gradientLayer.borderWidth = layer.borderWidth
gradientLayer.cornerRadius = layer.cornerRadius

layer.insertSublayer(gradientLayer, at: 0)

} else {
gradientLayer.removeFromSuperlayer()
}

}
}

使用该自定义类,我可以在 Interface Builder 上设置渐变颜色,并立即在我的 Storyboard上看到结果。

enter image description here

问题是 :当我将方向切换到水平时,我的按钮只画了一半。

enter image description here

就像由于某种原因未应用新的调整大小的参数一样。
似乎是什么问题?

最佳答案

将此添加到您的 GradientButton类(class):

override var bounds: CGRect {
didSet {
setGradient(topGradientColor: topGradientColor, bottomGradientColor: bottomGradientColor)
}
}

关于ios - 在 Storyboard 上的方向转换后调整自定义渐变按钮的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59830398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com