Nie mam pojęcia, jak ustawić gradient tła na przycisku (bez wykonywania gradientu tła obrazu). To bardzo różni się od Androida.Ustaw Gradient tła na przycisku w Swift
Oto klasa muszę zdefiniować zwrotnej schemat gradient:
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
}
}
mogę to wykorzystać, aby ustawić tło całym moim zdaniem z następujących czynności:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let background = CAGradientLayer().backgroundGradientColor()
background.frame = self.view.bounds
self.view.layer.insertSublayer(background, atIndex: 0)
}
//...
}
ale jak mogę uzyskać dostęp do widoku przycisku i wstawić podwarstwa lub coś w tym stylu? Mam Google przez kilka godzin i nie mogę znaleźć niczego przydatnego. Jestem z tego całkiem zgubiony.
Nie zgadzam się z ostatnim zdaniem. Podczas gdy przyciski są widokami, tło przycisku nie jest tym samym, co tło widoku. Tło przycisków może się zmieniać w zależności od stanu przycisku. Dodając gradient jako warstwę, tracimy ten efekt. Idealnym rozwiązaniem jest przechwycenie warstwy gradientu w obraz i ustawienie obrazu jako obrazu tła przycisku. Innym problemem jest to, że krawędzie warstw powinny być aktualizowane zawsze, gdy zmienia się ramka przycisku, czyli z "layoutSubviews". – Sulthan