ボタン上に背景グラデーションを設定する方法はありません。これはAndroidと非常に異なっています。スウィフトのボタンの背景グラデーションを設定する
はここに私が通い勾配スキームを定義する必要がクラスです。
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)
}
//...
}
しかし、どのように私はできボタンのビューにアクセスして、サブレイヤなどを挿入しますか?私は数時間googledして何か役に立つものを見つけることができません。私はこれでかなり失われています。
私は最後の文章に同意しません。ボタンはビューですが、ボタンの背景はビューの背景と同じではありません。ボタンの背景は、ボタンの状態によって変わる可能性があります。グラデーションをレイヤーとして追加すると、その効果は失われます。理想的な解決策は、勾配層を画像に取り込み、画像をボタン背景画像として設定することです。 もう1つの問題は、レイヤー境界がボタンフレームが変更されたとき、つまり 'layoutSubviews'から常に更新されるべきことです。 – Sulthan