无法将 CAGradientLayer 应用为 UITableView 背景视图
Cannot apply CAGradientLayer as UITableView background view
我有一个 UITableViewController,我正在尝试应用渐变背景。
我希望渐变出现在整个视图上,而不仅仅是一个单元格。
我有一个扩展程序,其中包含我在 viewDidLoad
中调用的功能。我希望它能在我的 UITableView
后面应用并可见
但是背景总是白色的。我设置了 view.backgroundColor = UIColor.clear
以防这只是我渐变上的一个白色层,但是它没有出现,因为背景现在只是黑色。
HomeController.swift
extension HomeController {
fileprivate func applyBackgroundGradientView() -> Void {
let frame = CGRect(x: 0.0, y: 0.0, width: view.frame.size.width, height: view.frame.size.height)
let bgView = UIView(frame: frame)
bgView.layer.insertSublayer(gradientBackgroundView, at: 0)
tableView.backgroundView = bgView
}
}
GradientBackgroundView.swift
class GradientBackgroundView: CAGradientLayer {
override init() {
super.init()
setupGradientLayer()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
fileprivate func setupGradientLayer() -> Void {
self.colors = ["226320","256c23","39a636","267024"].map({ hex -> CGColor in
return UIColor.hexStringToUIColor(hex: hex).cgColor
})
self.calculatePoints(for: 45)
}
}
我在你的 CAGradientLayer
上没有看到框架。
如果您不设置 frame,您的视图将不会显示。
let gradientBackgroundView = GradientBackgroundView()
gradientBackgroundView.frame = CGRect(x: 0.0, y: 0.0, width: view.frame.size.width, height: view.frame.size.height)
view.layer.insertSublayer(gradientBackgroundView, at: 0)
我有一个 UITableViewController,我正在尝试应用渐变背景。
我希望渐变出现在整个视图上,而不仅仅是一个单元格。
我有一个扩展程序,其中包含我在 viewDidLoad
中调用的功能。我希望它能在我的 UITableView
但是背景总是白色的。我设置了 view.backgroundColor = UIColor.clear
以防这只是我渐变上的一个白色层,但是它没有出现,因为背景现在只是黑色。
HomeController.swift
extension HomeController {
fileprivate func applyBackgroundGradientView() -> Void {
let frame = CGRect(x: 0.0, y: 0.0, width: view.frame.size.width, height: view.frame.size.height)
let bgView = UIView(frame: frame)
bgView.layer.insertSublayer(gradientBackgroundView, at: 0)
tableView.backgroundView = bgView
}
}
GradientBackgroundView.swift
class GradientBackgroundView: CAGradientLayer {
override init() {
super.init()
setupGradientLayer()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
fileprivate func setupGradientLayer() -> Void {
self.colors = ["226320","256c23","39a636","267024"].map({ hex -> CGColor in
return UIColor.hexStringToUIColor(hex: hex).cgColor
})
self.calculatePoints(for: 45)
}
}
我在你的 CAGradientLayer
上没有看到框架。
如果您不设置 frame,您的视图将不会显示。
let gradientBackgroundView = GradientBackgroundView()
gradientBackgroundView.frame = CGRect(x: 0.0, y: 0.0, width: view.frame.size.width, height: view.frame.size.height)
view.layer.insertSublayer(gradientBackgroundView, at: 0)