定位约束没有任何影响

Positioning constraints not having any effect

我正在尝试在 viewDidLoad 函数中对标签进行编码。标签出现了,但我现在使用的代码不影响定位。我正在尝试对 viewDidLoad 函数中的所有内容进行编码。你可以看到下面的截图。

override func viewDidLoad() {
    super.viewDidLoad()

    let backbutton = UILabel()
    backbutton.backgroundColor = UIColor.orange
    backbutton.translatesAutoresizingMaskIntoConstraints = false
    backbutton.widthAnchor.constraint(equalToConstant: 300).isActive = true
    backbutton.heightAnchor.constraint(equalToConstant: 300).isActive = true
    backbutton.centerXAnchor.constraint(equalTo: backbutton.centerXAnchor, constant: 100).isActive = true
    backbutton.centerYAnchor.constraint(equalTo: backbutton.centerYAnchor, constant: 300).isActive = true
    view.addSubview(backbutton)
}

这就是如何将 label 对齐到 view

center
let backbutton = UILabel()
view.addSubview(backbutton)

backbutton.backgroundColor = UIColor.orange
backbutton.translatesAutoresizingMaskIntoConstraints = false
backbutton.widthAnchor.constraint(equalToConstant: 300).isActive = true
backbutton.heightAnchor.constraint(equalToConstant: 300).isActive = true
backbutton.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
backbutton.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 0).isActive = true

当您以编程方式设置 constraints 时,请确保在应用 constraints 之前将 view 添加到 super/parent view 中。其次,在下面几行中,您告诉 backButton 标签将其中心与其自身对齐(即 backbutton.centerXAnchor.constraint(equalTo: backbutton.centerXAnchor)。

backbutton.centerXAnchor.constraint(equalTo: backbutton.centerXAnchor, constant: 100).isActive = true
backbutton.centerYAnchor.constraint(equalTo: backbutton.centerYAnchor, constant: 300).isActive = true

因为你想将它的中心 verticallyhorizontally 对齐到它的 parent view 所以你应该设置 center constraints 等于 parent view如下,

backbutton.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
backbutton.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 0).isActive = true

试试这个!!

 self.view.setNeedsUpdateConstraints()
    self.view.layoutIfNeeded()

尝试改用 CGRect:

            let screenWidth = UIScreen.main.bounds.width
            let screenHeight = UIScreen.main.bounds.height
            let xPostion:CGFloat = screenWidth - 150 //150 is half of view's width
            let yPostion:CGFloat = screenHeight - 150 //150 is half of view's height
            let buttonWidth:CGFloat = 300
            let buttonHeight:CGFloat = 300
            backbutton.frame = CGRect(x:xPostion, y:yPostion, width:buttonWidth, height:buttonHeight)

而不是屏幕 width/height 您也可以尝试使用以下方法获取超级视图的宽度:

  self.view.frame.width 
  self.view.frame.height