如何使用 CAGradientLayer 以编程方式将渐变设置为 swift 中的 UIView(子视图)?
How to set a gradient using CAGradientLayer to a UIView (subview) in swift programatically?
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.addSubview(container)
container.customAcnhor(top: view.topAnchor, left: view.leftAnchor, right: view.rightAnchor, height: 350)
}
let container : UIView = {
var view = UIView()
let gradient = CAGradientLayer()
gradient.frame = view.bounds
gradient.colors = [UIColor.blue.cgColor, UIColor.red.cgColor]
view.layer.insertSublayer(gradient, at: 0)
return view
}()
}
代码上下文
上面的 class 有一个 container 类型 UIView 其中包含一个 CAGradientLayer。我正在尝试将渐变显示到 子视图 ,我将此容器(子视图)添加到主视图。
下面是一个类似的例子,说明我想如何实现这一点。图像上的蓝色需要有我的自定义渐变。
有人可以帮我解决这个问题吗?
您可能需要在布局 container view
后再次设置 gradient layer
的框架。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.addSubview(container)
container.customAcnhor(top: view.topAnchor, left: view.leftAnchor, right: view.rightAnchor, height: 350)
gradient.colors = [UIColor.blue.cgColor, UIColor.red.cgColor]
}
let gradient = CAGradientLayer()
lazy var container : UIView = {
var view = UIView()
view.layer.insertSublayer(gradient, at: 0)
return view
}()
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
gradient.frame = container.bounds
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.addSubview(container)
container.customAcnhor(top: view.topAnchor, left: view.leftAnchor, right: view.rightAnchor, height: 350)
}
let container : UIView = {
var view = UIView()
let gradient = CAGradientLayer()
gradient.frame = view.bounds
gradient.colors = [UIColor.blue.cgColor, UIColor.red.cgColor]
view.layer.insertSublayer(gradient, at: 0)
return view
}()
}
代码上下文
上面的 class 有一个 container 类型 UIView 其中包含一个 CAGradientLayer。我正在尝试将渐变显示到 子视图 ,我将此容器(子视图)添加到主视图。
下面是一个类似的例子,说明我想如何实现这一点。图像上的蓝色需要有我的自定义渐变。
有人可以帮我解决这个问题吗?
您可能需要在布局 container view
后再次设置 gradient layer
的框架。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.addSubview(container)
container.customAcnhor(top: view.topAnchor, left: view.leftAnchor, right: view.rightAnchor, height: 350)
gradient.colors = [UIColor.blue.cgColor, UIColor.red.cgColor]
}
let gradient = CAGradientLayer()
lazy var container : UIView = {
var view = UIView()
view.layer.insertSublayer(gradient, at: 0)
return view
}()
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
gradient.frame = container.bounds
}
}