如何让我的 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)
])
在我的 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)
])