定位约束没有任何影响
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
因为你想将它的中心 vertically
和 horizontally
对齐到它的 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
我正在尝试在 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
因为你想将它的中心 vertically
和 horizontally
对齐到它的 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