如何让我的 HeightAnchor 正常工作?

How do I Get My HeightAnchor Working Properly?

在我的 MainVC 中,我试图将 UIView 限制在顶部、左侧、右侧并且高度为 80。现在,我的视图是全屏的。我将如何修复我的代码以使其具有正确的大小?

//变量 var topViewCons : [NSLayoutConstraint] = []

// Constants
let topGradient = RadialGradientLayer()
let topMainView = UIView()
// MainVC Top View Constraints
topMainView.translatesAutoresizingMaskIntoConstraints = false
topGradient.frame = view.bounds
topMainView.layer.addSublayer(topGradient)
self.view.addSubview(topMainView)

let topConstraint = topMainView.topAnchor.constraint(equalTo: self.view.topAnchor)
let leftConstraint = topMainView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor)
let rightConstraint = topMainView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)
let topViewHeight = topMainView.heightAnchor.constraint(equalToConstant: 80)
NSLayoutConstraint.activate([topConstraint, leftConstraint, rightConstraint, topViewHeight])

不是全屏,渐变是

topGradient.frame = view.bounds  // here you make it's frame to screen bounds 
topMainView.layer.addSublayer(topGradient)

所以你需要设置

topMainView.clipsToBounds = true

override func viewDidLayoutSubviews() {
  super.viewDidLayoutSubviews()
  topGradient.frame = topMainView.bounds
}

你也可以直接这样做而不需要让

NSLayoutConstraint.activate([
      topMainView.topAnchor.constraint(equalTo: self.view.topAnchor),
      topMainView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
      topMainView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
      topMainView.heightAnchor.constraint(equalToConstant: 80)
])