Ich habe keine Ahnung, wie man den Hintergrundgradienten auf einer Schaltfläche einstellt (ohne den Hintergrundfarbverlauf zu einem Bild zu machen). Das ist so anders als bei Android.Hintergrundfarbe auf Knopf in Swift setzen
hier eine Klasse ist Ich habe ein Mehrweg-Gradientenschema zu definieren:
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
}
}
ich dies den Hintergrund meiner gesamten Ansicht mit dem folgenden festlegen kann:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let background = CAGradientLayer().backgroundGradientColor()
background.frame = self.view.bounds
self.view.layer.insertSublayer(background, atIndex: 0)
}
//...
}
Aber wie kann ich Zugriff auf die Ansicht der Schaltfläche und fügen Sie die Sublayer oder etwas ähnliches ein? Ich habe ein paar Stunden gegoogelt und kann nichts hilfreiches finden. Ich bin ziemlich verloren damit.
Ich stimme dem letzten Satz nicht zu. Während Schaltflächen Ansichten sind, ist der Hintergrund der Schaltfläche nicht identisch mit dem Hintergrund der Ansicht. Der Schaltflächenhintergrund kann sich je nach Status der Schaltfläche ändern. Wenn wir den Verlauf als Ebene hinzufügen, verlieren wir diesen Effekt. Die ideale Lösung besteht darin, die Farbverlaufsebene in ein Bild einzufügen und das Bild als Hintergrundbild für die Schaltfläche festzulegen. Ein weiteres Problem ist, dass die Ebenengrenzen immer aktualisiert werden sollen, wenn sich der Schaltflächenrahmen ändert, also von 'layoutSubviews'. – Sulthan