-3
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
}
Nirav D
  • 71,513
  • 12
  • 161
  • 183

1 Answers1

1

Try this it's working for me (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
}

Output:

enter image description here

Nikunj Kumbhani
  • 3,758
  • 2
  • 26
  • 51