Non ho idea di come impostare il gradiente di sfondo su un pulsante (senza rendere il gradiente di sfondo un'immagine). Questo è così diverso da Android.Imposta sfumatura di sfondo sul pulsante in Swift
Ecco una classe che devo definire uno schema gradiente restituibile:
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
}
}
posso usare questo per impostare lo sfondo di tutta la mia vista con il seguente:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let background = CAGradientLayer().backgroundGradientColor()
background.frame = self.view.bounds
self.view.layer.insertSublayer(background, atIndex: 0)
}
//...
}
Ma come posso accedere alla vista del pulsante e inserire il sottolivello o qualcosa del genere? Ho cercato su Google per un paio d'ore e non riesco a trovare nulla di utile. Sono piuttosto perso con questo.
Non sono d'accordo con l'ultima frase. Mentre i pulsanti sono viste, lo sfondo del pulsante non è lo stesso dello sfondo della vista. Lo sfondo del pulsante può cambiare in base allo stato del pulsante. Quando aggiungiamo il gradiente come livello, perdiamo quell'effetto. La soluzione ideale è catturare il livello sfumato in un'immagine e impostare l'immagine come immagine di sfondo del pulsante. Un altro problema è che i limiti dei livelli devono essere aggiornati sempre quando cambia la cornice del pulsante, ovvero da 'layoutSubviews'. – Sulthan