NSLayoutconstraints 没有按预期工作
NSLayoutconstraints not working as expected
以下代码未按预期运行。 InfoLabel 未添加到视图中。我按照 viewDidLoad 中提到的顺序调用以下方法。任何快速 help/insights 都会很棒。
谢谢!
注意:我已经在 viewcontroller 中声明了所有变量,并且在调用相应的设置块之前不设置任何属性。
self.view.addSubview(cancelButton)
cancelButton.translatesAutoresizingMaskIntoConstraints = false
cancelButton.addTarget(self, action: #selector(cancelButtonClicked(_:)), for: .touchUpInside)
let constraints = [
cancelButton.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor),
cancelButton.widthAnchor.constraint(equalToConstant: 40),
cancelButton.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
cancelButton.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(constraints)
print(cancelButton.frame)
}
private func saveButtonSetup(){
self.view.addSubview(saveButton)
saveButton.translatesAutoresizingMaskIntoConstraints = false
saveButton.addTarget(self, action: #selector(saveButtonClicked(_:)), for: .touchUpInside)
let constraints = [
saveButton.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor),
saveButton.widthAnchor.constraint(equalToConstant: 40),
saveButton.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
saveButton.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(constraints)
print(saveButton.frame)
}
private func TitleLabelSetup(){
TitleLabel.backgroundColor = UIManager.Colors.cellBGColor
TitleLabel.textAlignment = .center
TitleLabel.font = UIManager.Fonts.titleFont
TitleLabel.textColor = UIManager.Colors.titleColor
self.view.addSubview(TitleLabel)
let constraints = [
TitleLabel.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor/*self.cancelButton.trailingAnchor*/,constant: 0),
TitleLabel.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor/*self.saveButton.leadingAnchor*/, constant: 0),
TitleLabel.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
TitleLabel.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(constraints)
print(TitleLabel.frame)
}
private funcInfoLabelSetup(){
self.view.addSubview(InfoLabel)
let constraints = [
InfoLabel.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor,constant: 0),
InfoLabel.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor, constant: 0),
InfoLabel.topAnchor.constraint(equalTo: TitleLabel.bottomAnchor,constant: 1),
Label.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(constraints)
print(InfoLabel,InfoLabel.frame)
}
}```
translatesAutoresizingMaskIntoConstraints 没有为您的 closureInfoLabel 和 closeRequestTitleLabel 设置为 false。
你的约束是错误的。
您将 leadingAnchor 锚定到 view
的 trailingAnchor 并将 trailingAnchor 锚定到 view
的 leadingAnchor。你还需要设置
translatesAutoresizingMaskIntoConstraints
到 false
更正如下:
private func closureInfoLabelSetup(){
self.view.addSubview(closureInfoLabel)
closureInfoLabel.translatesAutoresizingMaskIntoConstraints = false
let constraints = [
closureInfoLabel.leadingAnchor.constraint(equalTo: self.view.leadingAnchor,constant: 0),
closureInfoLabel.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: 0),
closureInfoLabel.topAnchor.constraint(equalTo: closeRequestTitleLabel.bottomAnchor,constant: 1),
closureInfoLabel.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(constraints)
print(closureInfoLabel,closureInfoLabel.frame)
}
以下代码未按预期运行。 InfoLabel 未添加到视图中。我按照 viewDidLoad 中提到的顺序调用以下方法。任何快速 help/insights 都会很棒。 谢谢! 注意:我已经在 viewcontroller 中声明了所有变量,并且在调用相应的设置块之前不设置任何属性。
self.view.addSubview(cancelButton)
cancelButton.translatesAutoresizingMaskIntoConstraints = false
cancelButton.addTarget(self, action: #selector(cancelButtonClicked(_:)), for: .touchUpInside)
let constraints = [
cancelButton.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor),
cancelButton.widthAnchor.constraint(equalToConstant: 40),
cancelButton.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
cancelButton.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(constraints)
print(cancelButton.frame)
}
private func saveButtonSetup(){
self.view.addSubview(saveButton)
saveButton.translatesAutoresizingMaskIntoConstraints = false
saveButton.addTarget(self, action: #selector(saveButtonClicked(_:)), for: .touchUpInside)
let constraints = [
saveButton.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor),
saveButton.widthAnchor.constraint(equalToConstant: 40),
saveButton.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
saveButton.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(constraints)
print(saveButton.frame)
}
private func TitleLabelSetup(){
TitleLabel.backgroundColor = UIManager.Colors.cellBGColor
TitleLabel.textAlignment = .center
TitleLabel.font = UIManager.Fonts.titleFont
TitleLabel.textColor = UIManager.Colors.titleColor
self.view.addSubview(TitleLabel)
let constraints = [
TitleLabel.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor/*self.cancelButton.trailingAnchor*/,constant: 0),
TitleLabel.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor/*self.saveButton.leadingAnchor*/, constant: 0),
TitleLabel.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
TitleLabel.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(constraints)
print(TitleLabel.frame)
}
private funcInfoLabelSetup(){
self.view.addSubview(InfoLabel)
let constraints = [
InfoLabel.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor,constant: 0),
InfoLabel.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor, constant: 0),
InfoLabel.topAnchor.constraint(equalTo: TitleLabel.bottomAnchor,constant: 1),
Label.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(constraints)
print(InfoLabel,InfoLabel.frame)
}
}```
translatesAutoresizingMaskIntoConstraints 没有为您的 closureInfoLabel 和 closeRequestTitleLabel 设置为 false。
你的约束是错误的。
您将 leadingAnchor 锚定到 view
的 trailingAnchor 并将 trailingAnchor 锚定到 view
的 leadingAnchor。你还需要设置
translatesAutoresizingMaskIntoConstraints
到 false
更正如下:
private func closureInfoLabelSetup(){
self.view.addSubview(closureInfoLabel)
closureInfoLabel.translatesAutoresizingMaskIntoConstraints = false
let constraints = [
closureInfoLabel.leadingAnchor.constraint(equalTo: self.view.leadingAnchor,constant: 0),
closureInfoLabel.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: 0),
closureInfoLabel.topAnchor.constraint(equalTo: closeRequestTitleLabel.bottomAnchor,constant: 1),
closureInfoLabel.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(constraints)
print(closureInfoLabel,closureInfoLabel.frame)
}