如何在 swift 中对 tableview 的背景进行渐变

how to gradient a background of a tableview in swift

func setTableViewBackgroundGradient(sender: UITableViewController, _ topColor:UIColor, _ bottomColor:UIColor) {

    let gradientBackgroundColors = [topColor.cgColor, bottomColor.cgColor]
    let gradientLocations = [0.0,1.0]

    let gradientLayer = CAGradientLayer()
    gradientLayer.colors = gradientBackgroundColors
    gradientLayer.locations = gradientLocations as [NSNumber]

    gradientLayer.frame = sender.tableView.bounds
    let backgroundView = UIView(frame: sender.tableView.bounds)
    backgroundView.layer.insertSublayer(gradientLayer, at: 0)
    sender.tableView.backgroundView = backgroundView
}

试试这个对我有用 (Swift 4)

Note : First of all set Tableview Cell & Cell ContentView Background Color to Clear Color.

@IBOutlet fileprivate weak var tblVw: UITableView!

private var gradientLayer = CAGradientLayer()

override func viewDidLoad() {
    super.viewDidLoad()
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    if gradientLayer.superlayer != nil {
        gradientLayer.removeFromSuperlayer()
    }
    let topColor = UIColor(red: 16.0/255.0, green: 12.0/255.0, blue: 54.0/255.0, alpha: 1.0)
    let bottomColor = UIColor(red: 57.0/255.0, green: 33.0/255.0, blue: 61.0/255.0, alpha: 1.0)
    gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
    gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
    gradientLayer.colors = [topColor.cgColor, bottomColor.cgColor]
    gradientLayer.frame = tblVw.bounds
    let backgroundView = UIView(frame: tblVw.bounds)
    backgroundView.layer.insertSublayer(gradientLayer, at: 0)
    tblVw.backgroundView = backgroundView
}

输出: