在下面的代码中,我试图将某些东西限制在uiscreen中心点的顶部。我在下面添加了一张我所要找的东西的图片。下面的代码是我试过的,它把它钉在屏幕的中心点,并把对象放在屏幕的中间。
import UIKit
class ViewController: UIViewController {
var box = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
box.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(box)
box.backgroundColor = .systemPink
NSLayoutConstraint.activate([
box.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier : 0.25),
box.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier : 0.25),
box.centerXAnchor.constraint(equalTo: view.centerXAnchor ),
box.centerYAnchor.constraint(equalTo: view.centerYAnchor),
])
}
}
你需要删除 centerYAnchor
拘泥 box
并设置 bottomAnchor
而不是。
移除。box.centerYAnchor.constraint(equalTo: view.centerYAnchor)
增加: box.bottomAnchor.constraint(equalTo: view.centerYAnchor)
纠正约束。
NSLayoutConstraint.activate([
box.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.25),
box.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.25),
box.centerXAnchor.constraint(equalTo: view.centerXAnchor),
box.bottomAnchor.constraint(equalTo: view.centerYAnchor)
])
移除这个。
box.centerYAnchor.constraint(equalTo: view.centerYAnchor )
增加这个
box.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 20) //Add padding accordingly
按原样添加下面的解决方案......它将帮助你完美运行......!!!
override func viewDidLoad() {
super.viewDidLoad()
box.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(box)
box.backgroundColor = .systemPink
NSLayoutConstraint.activate([
box.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier : 0.25),
box.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier : 0.25),
box.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 16),
box.centerXAnchor.constraint(equalTo: view.centerXAnchor )
])
// Do any additional setup after loading the view.
}
注意:-你添加的是 box.centerYAnchor.constraint(equalTo: view.centerYAnchor)
这个约束,由于这个约束,你无法将你的盒子放在中心位置。