gpt4 book ai didi

swift - 以编程方式向 View 添加约束

转载 作者:行者123 更新时间:2023-11-28 12:49:57 26 4
gpt4 key购买 nike

这是我添加约束的简单代码:

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

let contentView = UIView()
contentView.backgroundColor = UIColor.greenColor()
contentView.frame.size.width = 250
contentView.frame.size.height = 100
contentView.center = view.center
view.addSubview(contentView)

let userNameLabel = UILabel()
userNameLabel.translatesAutoresizingMaskIntoConstraints = false
userNameLabel.text = "Username:"
contentView.addSubview(userNameLabel)

let passwordLabel = UILabel()
passwordLabel.translatesAutoresizingMaskIntoConstraints = false
passwordLabel.text = "Password:"
contentView.addSubview(passwordLabel)

let usernameTextField = UITextField()
usernameTextField.translatesAutoresizingMaskIntoConstraints = false
usernameTextField.borderStyle = .RoundedRect
contentView.addSubview(usernameTextField)

let passwordTextField = UITextField()
passwordTextField.translatesAutoresizingMaskIntoConstraints = false
passwordTextField.borderStyle = .RoundedRect
contentView.addSubview(passwordTextField)

let submitButton = UIButton()
submitButton.translatesAutoresizingMaskIntoConstraints = false
submitButton.setTitle("Submit", forState: .Normal)
submitButton.setTitleColor(UIColor.redColor(), forState: .Normal)
submitButton.setTitleColor(UIColor.redColor(), forState: .Highlighted)
contentView.addSubview(submitButton)

// For Username
NSLayoutConstraint(item: userNameLabel, attribute: .Leading, relatedBy: .Equal, toItem: contentView, attribute: .LeadingMargin, multiplier: 1, constant: 0).active = true
NSLayoutConstraint(item: userNameLabel, attribute: .Top, relatedBy: .Equal, toItem: contentView, attribute: .Top, multiplier: 1, constant: 10).active = true
NSLayoutConstraint(item: usernameTextField, attribute: .Trailing, relatedBy: .Equal, toItem: contentView, attribute: .TrailingMargin, multiplier: 1.0, constant: 0.0).active = true
NSLayoutConstraint(item: usernameTextField, attribute: .Leading, relatedBy: .Equal, toItem: userNameLabel, attribute: .Trailing, multiplier: 1.0, constant: 3).active = true
NSLayoutConstraint(item: userNameLabel, attribute: .Baseline, relatedBy: .Equal, toItem: usernameTextField, attribute: .Baseline, multiplier: 1.0, constant: 0.0).active = true
// For Password
NSLayoutConstraint(item: passwordLabel, attribute: .Leading, relatedBy: .Equal, toItem: contentView, attribute: .LeadingMargin, multiplier: 1, constant: 0).active = true
NSLayoutConstraint(item: passwordLabel, attribute: .Top, relatedBy: .Equal, toItem: userNameLabel, attribute: .Bottom, multiplier: 1, constant: 15).active = true
NSLayoutConstraint(item: passwordTextField, attribute: .Trailing, relatedBy: .Equal, toItem: contentView, attribute: .TrailingMargin, multiplier: 1.0, constant: 0.0).active = true
NSLayoutConstraint(item: passwordTextField, attribute: .Leading, relatedBy: .Equal, toItem: passwordLabel, attribute: .Trailing, multiplier: 1.0, constant: 3).active = true
NSLayoutConstraint(item: passwordLabel, attribute: .Baseline, relatedBy: .Equal, toItem: passwordTextField, attribute: .Baseline, multiplier: 1.0, constant: 0.0).active = true
// For Button
NSLayoutConstraint(item: submitButton, attribute: .Top, relatedBy: .Equal, toItem: passwordLabel, attribute: .Bottom, multiplier: 1.0, constant: 8.0).active = true
NSLayoutConstraint(item: submitButton, attribute: .CenterX, relatedBy: .Equal, toItem: contentView, attribute: .CenterX, multiplier: 1.0, constant: 0.0).active = true
}

}

但为什么它看起来像这样,我希望 passWordTextField 的前导是 3passWordLabel 的尾部:

enter image description here

我查看这一行,没有发现任何问题:

NSLayoutConstraint(item: passwordTextField, attribute: .Leading, relatedBy: .Equal, toItem: passwordLabel, attribute: .Trailing, multiplier: 1.0, constant: 3).active = true

任何帮助将不胜感激。谢谢

最佳答案

问题是标签和文本字段具有相同的拥抱优先级。您需要定义要优先考虑的一个。示例:

userNameLabel.setContentHuggingPriority(251, forAxis: .Horizontal)
passwordLabel.setContentHuggingPriority(251, forAxis: .Horizontal)

关于swift - 以编程方式向 View 添加约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36769897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com