问题描述
在我下面的 swift 代码中,我试图始终将图片限制在顶部锚点下方 10%。通过常量 来做到这一点。就像下面的图片,橙色框是顶部锚点下方 10% 的约束,它是一个常量。我尝试在约束中处理常量,但它不起作用。
import UIKit
class ViewController: UIViewController {
var drawView = UIView()
var pic = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
[pic,drawView].forEach{
$0.translatesAutoresizingMaskIntoConstraints = false
view.addSubview($0)
}
NSLayoutConstraint.activate([
//here is the constant
pic.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor,constant,),pic.centerXAnchor.constraint(equalTo: view.centerXAnchor),pic.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.25),pic.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.8),drawView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),drawView.centerXAnchor.constraint(equalTo: view.centerXAnchor),drawView.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.3),drawView.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.9),])
view.bringSubviewToFront(pic)
drawView.backgroundColor = .blue
pic.backgroundColor = .purple
}
}
解决方法
您需要一个高度为父视图高度 1/10 的不可见视图,通过其乘数,作为间隔器。现在只需将其底部设置为可见视图的顶部即可。