水平 Stackview 左对齐项目

Posted

技术标签:

【中文标题】水平 Stackview 左对齐项目【英文标题】:Horizontal Stackview left align items 【发布时间】:2018-08-24 22:24:19 【问题描述】:

我正在创建一个水平 UIStackView 并希望在其中左对齐项目。 这是我的代码:

let nameLabel: UILabel = 
    let label=UILabel()
    label.text = "First Name:"
    label.textColor = UIColor.black
    label.font = UIFont.systemFont(ofSize: 20)
    label.textAlignment = .left
    label.translatesAutoresizingMaskIntoConstraints=false
    return label
()

let nameTextField: UITextField = 
    let label=UITextField()
    label.placeholder = "Enter Name"
    label.textColor = UIColor.darkGray
    label.font = UIFont.systemFont(ofSize: 18)
    label.textAlignment = .left
    label.isUserInteractionEnabled = false
    label.translatesAutoresizingMaskIntoConstraints=false
    return label
()

lazy var firstNameView: UIStackView = 
    let stackView = UIStackView(arrangedSubviews: [self.nameLabel, self.nameTextField])
    stackView.translatesAutoresizingMaskIntoConstraints = false;
    stackView.axis = .horizontal
    stackView.distribution = .fill
    stackView.alignment = .center
    stackView.spacing = 10.0
    return stackView
()

这就是我如何将它添加到视图中

self.view.addSubview(firstNameView)

firstNameView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true;
    firstNameView.topAnchor.constraint(equalTo: idLabel.bottomAnchor).isActive = true;
    firstNameView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
    firstNameView.heightAnchor.constraint(equalToConstant: 40.0).isActive = true

我还尝试了以下方法:

firstNameView.trailingAnchor.constraint(greaterThanOrEqualTo: self.view.trailingAnchor).isActive = true

PS:这个问题与UIStackview align left 不同,因为我说的是水平堆栈视图

根据此链接Left aligned horizontal stackview and top aligned vertical stackview 有没有其他选择,我真的不想设置固定宽度。

【问题讨论】:

【参考方案1】:

将标签包装在 UIView 中,并将标签固定在这些视图的左侧。将视图放入堆栈视图,它们将填充堆栈视图而无需操作标签。

【讨论】:

我会试试这个,但不确定是否将每个标签和文本字段包装在 UIView 中是个好主意。 好吧,让我知道进展如何。如果我遇到您的问题,我会以这种方式解决,因此如果此方法不正确,请告诉我 =)

以上是关于水平 Stackview 左对齐项目的主要内容,如果未能解决你的问题,请参考以下文章

水平 StackView 的正确对齐和分布选择

stackView 中的 StackView 不能通过 swift 使用它的间距

在 Swift 中以编程方式将视图添加到 stackview

AutoLayout 和 Embedded stackview 约束冲突

水平 UIStackView - 如何对齐里面的项目,以便一个向左浮动,另一个在中心?

在不停止 stackView 自动调整大小的情况下对齐图像视图