如何在 iOS Swift 3 中以编程方式设置元素视图中心?

rez*_*afi -1 layout constraints ios autolayout swift

我有一个视图,我想在其超级视图中水平和垂直居中。

我试过这个,但它不起作用:

let horConstraint = NSLayoutConstraint(item: webView, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1.0, constant: 0.0)
view.addConstraints([horConstraint]) 
Run Code Online (Sandbox Code Playgroud)

Tun*_*Fam 8

我建议尝试使用更方便、更容易理解的Anchors。这段代码以我的观点为中心:

    let someView = UIView()
    someView.backgroundColor = .red
    someView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(someView)
    NSLayoutConstraint.activate([
        someView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        someView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
        someView.heightAnchor.constraint(equalToConstant: 50),
        someView.widthAnchor.constraint(equalToConstant: 50)
    ])
Run Code Online (Sandbox Code Playgroud)


3st*_*nt3 5

尝试这个:

注意:确保您将此属性(在应用约束之前)设置为 false 对于 webView

webView.translatesAutoresizingMaskIntoConstraints = false
Run Code Online (Sandbox Code Playgroud)

对于 x 轴

let horConstraint = NSLayoutConstraint(item: webView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX ,multiplier: 1.0, constant: 0.0)
Run Code Online (Sandbox Code Playgroud)

对于 y 轴

let verConstraint = NSLayoutConstraint(item: webView, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY ,multiplier: 1.0, constant: 0.0)

view.addConstraints([horConstraint, verConstraint])
Run Code Online (Sandbox Code Playgroud)