gpt4 book ai didi

ios - 使用编程约束时如何将 CAGradientLayer 添加到 UIView

转载 作者:搜寻专家 更新时间:2023-11-01 05:56:26 24 4
gpt4 key购买 nike

对于 Swift 中的 iOS 应用程序,我正在使用编程约束并想将 CAGradientLayer() 添加到 UIView()。下面是我的代码,它不起作用。

   import UIKit

class ViewController: UIViewController {

let animationView: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()

override func viewDidLoad() {
super.viewDidLoad()

view.addSubview(animationView)
setupAnimationView()
animationView.addGradientLayer()
}

func setupAnimationView() {
animationView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
animationView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
animationView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
animationView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
}
}

extension UIView {

func addGradientLayer() {
let color1 = UIColor(red: 251/255, green: 55/255, blue: 91/255, alpha: 1.0)
let color2 = UIColor(red: 1.0, green: 70/255, blue: 0, alpha: 1.0)
let gradientLayer = CAGradientLayer()
gradientLayer.name = "gradientLayer"
gradientLayer.frame = self.frame
gradientLayer.colors = [color1.cgColor, color2.cgColor]
self.layer.insertSublayer(gradientLayer, at: 0)
}
}

我认为我遇到的问题与我创建带有编程约束的 animationView 的事实有关,然后我尝试通过将其框架设置为等于框架 View 来添加渐变层。当我不使用编程约束时,此代码有效。知道我遗漏了什么/做错了什么吗?

最佳答案

您添加到 View 中的任何图层都不会在 AutoLayout 下进行管理,并且没有办法实现这一点。

您可以做的是将图层存储为属性(可能在 View Controller 上)。

然后在方法中...

override func viewDidLayoutSubviews() {
super.viewDIdLayoutSubviews()
// update the layers frame based on the frame of the view.
}

在这种方法中, View 将具有适当的框架,因此如果它发生变化,您将需要相应地更新图层以具有新框架。

关于ios - 使用编程约束时如何将 CAGradientLayer 添加到 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41566696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com