У меня проблема с автоматическим макетом для моей пользовательской кнопки.
Я создал пользовательский класс для кнопки, чтобы добавить цвет градиента через конструктор интерфейса.
@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()
}
}
}
С этим пользовательским класс Я могу установить цвет градиента в Интерфейсном Разработчике и сразу увидеть результаты на моей раскадровке.

Проблема : Когда я переключаю ориентацию в горизонтальное положение, моя кнопка окрашивается только наполовину.

Похоже, новые измененные параметры не применяются по какой-то причине. В чем проблема?