Я понятия не имею, как установить фоновый градиент на кнопку (без создания фонового градиента изображения). Это сильно отличается от Android.Установите фона градиента на кнопке в Swift
Вот класс я должен определить возвратную схему градиента:
import UIKit
extension CAGradientLayer {
func backgroundGradientColor() -> CAGradientLayer {
let topColor = UIColor(red: (0/255.0), green: (153/255.0), blue:(51/255.0), alpha: 1)
let bottomColor = UIColor(red: (0/255.0), green: (153/255.0), blue:(255/255.0), alpha: 1)
let gradientColors: [CGColor] = [topColor.CGColor, bottomColor.CGColor]
let gradientLocations: [Float] = [0.0, 1.0]
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations
return gradientLayer
}
}
я могу использовать это, чтобы установить фон всей моей точки зрения следующим:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let background = CAGradientLayer().backgroundGradientColor()
background.frame = self.view.bounds
self.view.layer.insertSublayer(background, atIndex: 0)
}
//...
}
Но как я могу получить доступ к представлению кнопки и вставить подслой или что-то в этом роде? Я пару раз зашел в Google и не нашел ничего полезного. Я довольно потерял это.
Я не согласен с последним предложением. В то время как кнопки являются видами, фон кнопки не совпадает с фоном представления. Фон кнопки может меняться в зависимости от состояния кнопки. При добавлении градиента в качестве слоя мы теряем этот эффект. Идеальное решение состоит в том, чтобы захватить слой градиента в изображение, задав изображение как фоновое изображение кнопки. Другая проблема заключается в том, что границы слоев должны обновляться всегда, когда изменяется рамка кнопки, то есть из 'layoutSubviews'. – Sulthan